گوگل درایو
Google Drive
آپلود، دانلود و مدیریت فایل در Google Drive به صورت خودکار
نمای کلی
نود Google Drive یکی از پرکاربردترین نودهای n8n برای مدیریت فایل ابری است.
قابلیتهای کلیدی:
- آپلود فایل (متن، تصویر، PDF، ویدیو و...)
- دانلود فایلها
- ایجاد و مدیریت پوشهها
- جستجوی پیشرفته فایلها
- اشتراکگذاری و مدیریت دسترسی
- کپی و جابجایی فایلها
- بهروزرسانی metadata فایل
- کار با Google Docs، Sheets و Slides
- پشتیبانی از Shared Drives (Team Drives)
کاربردها:
- بکآپ خودکار فایلها و دیتابیس
- ذخیره فاکتورها و اسناد PDF
- آپلود تصاویر از فرمها
- مدیریت اسناد تیمی
- همگامسازی فایل بین سیستمها
- آرشیو ایمیلها و پیوستها
- تولید و ذخیره گزارشهای خودکار
محدودیتهای Drive:
- فضای رایگان: 15 گیگابایت
- حداکثر حجم آپلود: 5 ترابایت
- Google Workspace: 30 گیگابایت تا نامحدود
احراز هویت
احراز هویت Google Drive
روش 1: OAuth2 (توصیه میشود)
#### مرحله 1: ایجاد پروژه در Google Cloud Console
- 1به [Google Cloud Console](https://console.cloud.google.com/) بروید
- 2پروژه جدید بسازید
- 3به APIs & Services > Library بروید
- 4"Google Drive API" را جستجو و Enable کنید
#### مرحله 2: تنظیم OAuth Consent Screen
- 1APIs & Services > OAuth consent screen
- 2User Type: External
- 3اطلاعات اپلیکیشن را پر کنید
- 4Scopes:
https://www.googleapis.com/auth/drive(دسترسی کامل)- یا
https://www.googleapis.com/auth/drive.file(فقط فایلهای ساخته شده)
- 1Test Users اضافه کنید
#### مرحله 3: ایجاد OAuth Credentials
- 1APIs & Services > Credentials
- 2Create Credentials > OAuth client ID
- 3Application type: Web application
- 4Authorized redirect URIs:
https://your-n8n.com/rest/oauth2-credential/callback
- 1Client ID و Client Secret را کپی کنید
#### مرحله 4: تنظیم در n8n
- 1Credentials > Google Drive OAuth2 API
- 2Client ID و Client Secret وارد کنید
- 3Connect my account بزنید
- 4با اکانت Google وارد شوید
روش 2: Service Account (برای سرورها)
- 1Google Cloud Console > IAM & Admin > Service Accounts
- 2Service Account بسازید
- 3JSON Key فایل دانلود کنید
- 4فایل JSON را Share کنید با Drive folder مورد نظر
- 5در n8n: Service Account JSON وارد کنید
نکته مهم درباره Service Account:
- Service Account یک ایمیل مجازی است
- فایلها با این ایمیل ساخته میشوند
- برای دیدن فایلها در Drive، باید پوشه را با Service Account share کنید
نکات امنیتی:
- حداقل Scope لازم را بدهید
- از Service Account در Production استفاده کنید
- Client Secret را به اشتراک نگذارید
- Credential را مرتب Refresh کنید
عملیاتهای موجود
upload
آپلود فایل جدید به Google Drive
download
دانلود فایل از Google Drive
createFolder
ایجاد پوشه جدید
list
لیست فایلها و پوشهها
delete
حذف فایل یا پوشه
share
اشتراکگذاری فایل با دیگران
copy
ایجاد کپی از فایل
move
انتقال فایل به پوشه دیگر
update
بهروزرسانی metadata یا محتوای فایل
کاربردهای متداول
1. بکآپ خودکار دیتابیس
پشتیبانگیری روزانه:
Schedule (هر شب ساعت 2)
→ MySQL (Execute Query: SHOW TABLES)
→ Code (تبدیل به CSV)
→ Google Drive (Upload)
- Name: backup_{{$now.toFormat('yyyy-MM-dd')}}.csv
- Folder: Backups/Database2. ذخیره فاکتور PDF
ذخیره خودکار فاکتور بعد از پرداخت:
Webhook (پرداخت موفق)
→ HTTP Request (دریافت PDF فاکتور)
→ Google Drive (Upload)
- Name: Invoice-{{$json.invoiceId}}.pdf
- Folder: Invoices/{{$now.toFormat('yyyy/MM')}}
→ Gmail (ارسال فاکتور به مشتری)3. آپلود تصاویر فرم
ذخیره فایلهای آپلود شده کاربران:
Webhook (فرم با فایل)
→ Google Drive (Upload)
- Name: {{$json.userName}}_{{$now.toMillis()}}.jpg
- Folder: Uploads/Images
→ MySQL (ذخیره لینک فایل)4. همگامسازی اسناد
کپی اسناد مهم به Drive:
Schedule (هر ساعت)
→ MySQL (فایلهای جدید)
→ Loop
→ HTTP Request (دانلود فایل)
→ Google Drive (Upload)
→ MySQL (علامتگذاری: synced = true)5. مدیریت پوشهها
ایجاد ساختار پوشه برای پروژه جدید:
Webhook (پروژه جدید)
→ Google Drive (Create Folder: پروژه-{{$json.name}})
→ Google Drive (Create Folder: اسناد)
→ Google Drive (Create Folder: فاکتورها)
→ Google Drive (Create Folder: گزارشها)6. جستجوی فایل
API جستجوی فایل:
Webhook (جستجو)
→ Google Drive (List)
Query: name contains '{{$json.keyword}}'
and mimeType = 'application/pdf'
and modifiedTime > '{{$json.fromDate}}'
→ Respond to Webhook (نتایج)7. آرشیو ایمیلها
ذخیره ایمیلهای مهم:
Gmail Trigger (ایمیل جدید با label:important)
→ Code (تبدیل به HTML)
→ Google Drive (Upload)
- Name: Email_{{$json.subject}}_{{$now.toFormat('yyyyMMdd')}}.html
- Folder: Email-Archive8. گزارش خودکار
تولید و ذخیره گزارش:
Schedule (اول هر ماه)
→ MySQL (آمار فروش)
→ Code (تولید CSV)
→ Google Drive (Upload)
- Name: Sales_Report_{{$now.toFormat('yyyy-MM')}}.csv
- Folder: Reports/Monthly
→ Gmail (ارسال به مدیران)9. پاکسازی فایلهای قدیمی
حذف بکآپهای قدیمیتر از 30 روز:
Schedule (هر هفته)
→ Google Drive (List)
Query: '{{folderId}}' in parents
and modifiedTime < '{{$now.minus({days: 30}).toISO()}}'
→ Loop
→ Google Drive (Delete)
→ Telegram (گزارش حذف)10. Export Google Sheets به CSV
خروجی اسپردشیت:
Schedule (هر روز)
→ Google Drive (Download)
- FileId: spreadsheet_id
- MimeType: text/csv (Export)
→ MySQL (Import CSV data)نکات حرفهای
نکات حرفهای
- 1پیدا کردن File/Folder ID:
از URL:
File: https://drive.google.com/file/d/FILE_ID/view
Folder: https://drive.google.com/drive/folders/FOLDER_ID- 1Drive Query Syntax: فیلتر جستجو:
// نام فایل
name = 'myfile.pdf'
name contains 'report'
// نوع فایل
mimeType = 'application/pdf'
mimeType = 'application/vnd.google-apps.spreadsheet'
mimeType = 'application/vnd.google-apps.folder'
// تاریخ
modifiedTime > '2024-01-01T00:00:00'
createdTime > '2024-06-01'
// پوشه
'FOLDER_ID' in parents
// ترکیب
name contains 'invoice' and mimeType = 'application/pdf'- 1MIME Types رایج:
application/pdf → PDF
image/jpeg → JPEG
image/png → PNG
text/csv → CSV
application/vnd.google-apps.document → Google Docs
application/vnd.google-apps.spreadsheet → Google Sheets
application/vnd.google-apps.folder → Folder- 1نامگذاری با تاریخ: نام فایل منحصر به فرد:
backup_{{$now.toFormat('yyyy-MM-dd_HHmmss')}}.sql
report_{{$now.toFormat('yyyy-MM')}}.pdf- 1ساختار پوشه منظم:
Backups/
├── Database/
│ ├── 2024-01/
│ └── 2024-02/
├── Files/
└── Emails/- 1Export Google Docs: تبدیل فرمت:
Google Docs → application/pdf
Google Sheets → text/csv
Google Slides → application/pdf- 1Shared Drives: برای استفاده تیمی:
supportsAllDrives: trueفعال کنید- فایلها در مالکیت تیم هستند نه فرد
- 1آپلود با نوع خاص: تبدیل به Google Docs:
Upload DOCX → Google Docs (convert: true)
Upload XLSX → Google Sheets (convert: true)- 1دسترسی عمومی: لینک قابل اشتراک:
Type: anyone
Role: reader
→ URL: https://drive.google.com/file/d/ID/view- 1Versioning: Google Drive نسخههای قبلی فایل را نگه میدارد.
- بهروزرسانی محتوا: نسخه جدید ساخته میشود
- بازیابی نسخه قبلی از Drive UI
- 1فشردهسازی قبل از آپلود: برای فایلهای بزرگ از Code Node برای ZIP استفاده کنید.
- 1Webhook + Drive: فایل آپلود شده در فرم مستقیم به Drive:
Webhook (multipart/form-data)
→ Google Drive (Upload)
→ Respond (link فایل)- 1OCR: Google Drive قابلیت OCR دارد:
- هنگام آپلود،
ocrLanguage: 'fa'تنظیم کنید - تصویر به Google Docs تبدیل میشود
- 1Error Handling: همیشه Retry on Error فعال باشد برای مشکلات شبکه.
- 1Monitoring: تعداد فایلها و فضای استفاده شده را مانیتور کنید:
Schedule (هفتگی)
→ Google Drive (About API)
→ IF (فضا < 1GB) → Telegram (هشدار)رفع مشکلات
خطاهای رایج
1. خطای "File not found" (404)
علت: ID فایل اشتباه یا دسترسی ندارید
راهحل
- File ID را از URL فایل کپی کنید:
https://drive.google.com/file/d/**FILE_ID**/view
- مطمئن شوید با همان اکانتی که Credential ساختید به فایل دسترسی دارید
- اگر Service Account است، فایل را با ایمیل Service Account share کنید
2. خطای "Insufficient Permission" (403)
علت: دسترسی کافی نیست
راهحل
- Scope مناسب استفاده کنید:
drive.file: فقط فایلهای ساخته شدهdrive: دسترسی کامل- Credential را حذف و دوباره بسازید
- OAuth consent screen را بررسی کنید
3. خطای "Storage Quota Exceeded"
علت: فضای Drive تمام شده
راهحل
- فضای استفاده شده را بررسی کنید
- فایلهای غیرضروری و Trash را خالی کنید
- پلن Google Workspace ارتقا دهید
- از Shared Drive استفاده کنید
4. خطای "Rate Limit Exceeded"
علت: تعداد درخواست بیش از حد مجاز
راهحل
- بین درخواستها Wait اضافه کنید
- محدودیت Drive API:
- 1000 درخواست در 100 ثانیه
- 10 درخواست در ثانیه به ازای هر کاربر
- از Batch درخواستها استفاده کنید
5. خطای "Invalid Parent Folder"
علت: ID پوشه والد اشتباه
راهحل
- Folder ID از URL:
https://drive.google.com/drive/folders/**FOLDER_ID**
- مطمئن شوید پوشه وجود دارد
rootبرای پوشه اصلی استفاده کنید
6. فایل آپلود شده خالی است
علت: Binary Data درست منتقل نشده
راهحل
- مطمئن شوید نود قبلی Binary Data تولید کرده
- Property Name درست باشد (پیشفرض:
data) - از HTTP Request با Response Format: File استفاده کنید
7. خطای "Invalid Grant" (Token منقضی)
علت: OAuth Token نامعتبر
راهحل
- Credential را Reconnect کنید
- Google Cloud Console > Credentials > بررسی
- Consent Screen > Test Users بررسی کنید
