گوگل شیت
Google Sheets
خواندن، نوشتن و مدیریت داده در Google Sheets
نمای کلی
Google Sheets یکی از محبوبترین ابزارها برای مدیریت داده است که با n8n میتوانید آن را خودکار کنید.
قابلیتهای کلیدی:
- خواندن داده از سلولها و ردیفها
- نوشتن و بهروزرسانی داده
- افزودن ردیف جدید
- حذف ردیفها
- جستجو در شیت
- کار با چند صفحه (Sheet)
- فرمولنویسی
کاربردها:
- دیتابیس ساده برای پروژههای کوچک
- گزارشگیری خودکار
- فرمهای ثبتنام و نظرسنجی
- لیست وظایف و پروژهها
- ترکیب داده از منابع مختلف
- داشبورد و نمودار
مزایا:
- رایگان و در دسترس
- رابط کاربری آشنا
- اشتراکگذاری آسان
- همگامسازی خودکار
- قابلیت همکاری تیمی
احراز هویت
احراز هویت Google Sheets
روش 1: OAuth2 (توصیه میشود)
#### مرحله 1: فعال کردن Google Sheets API
- 1به [Google Cloud Console](https://console.cloud.google.com/) بروید
- 2پروژه جدید بسازید یا یکی موجود را انتخاب کنید
- 3به APIs & Services > Library بروید
- 4"Google Sheets API" را جستجو کنید
- 5Enable کنید
#### مرحله 2: OAuth Consent Screen
- 1به OAuth consent screen بروید
- 2User Type: External
- 3اطلاعات را پر کنید (نام اپلیکیشن، ایمیل)
- 4Scopes اضافه کنید:
https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/drive.file
- 1Test users: ایمیل خودتان
#### مرحله 3: OAuth Credentials
- 1Credentials > Create Credentials > OAuth client ID
- 2Application type: Web application
- 3Authorized redirect URIs:
https://your-n8n.com/rest/oauth2-credential/callback
- 1کپی کردن Client ID و Client Secret
#### مرحله 4: تنظیم در n8n
- 1Credentials > Google Sheets OAuth2 API
- 2Client ID و Client Secret را وارد کنید
- 3Connect my account
- 4با اکانت Google وارد شوید
- 5دسترسی را تایید کنید
روش 2: Service Account (سازمانی)
برای استفاده خودکار بدون تعامل کاربر:
- 1Service Account در Google Cloud بسازید
- 2JSON Key دانلود کنید
- 3به شیت دسترسی دهید (Share با ایمیل Service Account)
- 4در n8n، JSON را وارد کنید
نکات:
- OAuth2 برای کاربران فردی
- Service Account برای اتوماسیون کامل
- شیت باید با credential به اشتراک گذاشته شود
عملیاتهای موجود
append
افزودن ردیف جدید به انتهای شیت
update
بهروزرسانی ردیف موجود
read
خواندن داده از شیت
lookup
جستجو بر اساس ستون
delete
حذف یک یا چند ردیف
clear
پاک کردن محدوده مشخص
کاربردهای متداول
1. ثبت فرم در شیت
ذخیره فرمهای وب در Google Sheets:
Webhook (فرم) → Google Sheets (Append)
- Sheet ID: از URL شیت
- Range: Sheet1!A:E
- Values: [{{$json.name}}, {{$json.email}}, {{$json.phone}}, {{$now.toISO()}}]2. خواندن لیست و ارسال ایمیل
ارسال ایمیل به لیست کاربران:
Google Sheets (Read - لیست کاربران)
→ Loop
→ Gmail (Send)
- To: {{$json.email}}
- Message: محتوای شخصیسازی شده3. گزارش روزانه
ذخیره آمار روزانه:
Schedule (هر شب 23:00)
→ MySQL (آمار فروش امروز)
→ Google Sheets (Append)
- Values: [{{$now.toFormat('yyyy-MM-dd')}}, {{$json.sales}}, {{$json.orders}}]4. بهروزرسانی موجودی
همگامسازی موجودی از دیتابیس:
Schedule (هر ساعت)
→ MySQL (لیست محصولات)
→ Loop
→ Google Sheets (Lookup - پیدا کردن ردیف محصول)
→ Google Sheets (Update - بهروزرسانی موجودی)5. لیست وظایف
افزودن وظیفه جدید:
Telegram (دریافت پیام /task)
→ Set (پردازش پیام)
→ Google Sheets (Append)
- Range: Tasks!A:D
- Values: [{{$json.task}}, "pending", {{$now}}, {{$json.user}}]6. نظرسنجی
ذخیره نتایج نظرسنجی:
Webhook (نظرسنجی)
→ Google Sheets (Append)
- Values: [$json همه فیلدها, Timestamp]
→ Gmail (Send - تشکر از شرکتکننده)7. ترکیب داده از چند منبع
ادغام داده از API و دیتابیس:
[HTTP Request - API 1] ──┐
[MySQL - Query] ─────────┼── Merge
[HTTP Request - API 2] ──┘
→ Loop
→ Google Sheets (Append - ذخیره ترکیبی)8. داشبورد زنده
بهروزرسانی شیت برای نمودار:
Schedule (هر 5 دقیقه)
→ API (آمار فروش)
→ Google Sheets (Update - سلولهای خاص)
→ شیت خودکار نمودار را بهروز میکند9. مدیریت موجودی
کنترل موجودی محصولات:
Google Sheets (Read - لیست محصولات)
→ Loop
→ IF (موجودی < 10)
→ True: Gmail (اعلان موجودی کم)
→ False: ادامه10. بکآپ دیتابیس
بکآپ روزانه در شیت:
Schedule (هر شب)
→ MySQL (SELECT * FROM users)
→ Google Sheets (Clear - پاک کردن شیت قدیمی)
→ Google Sheets (Append - افزودن داده جدید)نکات حرفهای
💡 نکات حرفهای:
- 1دریافت Sheet ID از URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
^^^^^^^^ این قسمت Sheet ID است ^^^^^^^^- 1Range Notation:
Sheet1!A1:D10 // ستون A تا D، ردیف 1 تا 10
Sheet1!A:A // تمام ستون A
Sheet1!1:1 // تمام ردیف 1
Sheet1!A:D // ستونهای A تا D، همه ردیفها
'My Sheet'!A1 // Sheet با فاصله- 1Append vs Update:
- Append: اضافه کردن ردیف جدید به انتها
- Update: تغییر ردیف/سلول موجود
- 1کار با Header:
Range: Sheet1!A1:D1 // ردیف اول = header
Read → داده از ردیف 2 شروع میشود- 1فرمول در شیت: میتوانید فرمول بنویسید:
Values: [["=SUM(A2:A10)", "=AVERAGE(B2:B10)"]]- 1Timestamp خودکار:
Values: [[data1, data2, "{{$now.toFormat('yyyy-MM-dd HH:mm:ss')}}"]]- 1Multiple Sheets: از نام Sheet در Range استفاده کنید:
Users!A:D
Products!A:F
Orders!A:E- 1Lookup بهینه: اگر جستجوی زیادی دارید، داده را یکبار بخوانید و در n8n جستجو کنید:
Google Sheets (Read All) → Set (فیلتر در n8n)- 1Batch Updates: برای بهروزرسانی چند سلول، از یک Update استفاده کنید:
Range: A2:D2
Values: [[val1, val2, val3, val4]]- 1خالی بودن سلول: برای سلول خالی از رشته خالی استفاده کنید:
Values: [["data", "", "data"]] // ستون وسط خالی- 1Data Types: Google Sheets خودکار نوع تشخیص میدهد:
- عدد:
123یا"123" - متن:
"hello" - تاریخ:
"2024-01-15"یا فرمول=TODAY() - Boolean:
TRUEیاFALSE
- 1Performance: برای شیتهای بزرگ:
- فقط ستونهای لازم را بخوانید
- از Pagination استفاده کنید
- Cache کنید اگر داده کمتر تغییر میکند
- 1Sharing: شیت باید Public نباشد، فقط با Credential به اشتراک گذاشته شود.
- 1Version History: Google Sheets خودکار نسخهها را نگه میدارد.
- 1Array Formula: برای محاسبات پیشرفته:
=ARRAYFORMULA(IF(A2:A="", "", B2:B*C2:C))رفع مشکلات
خطاهای رایج
1. خطای "The caller does not have permission"
علت: شیت با credential به اشتراک گذاشته نشده
راهحل
- شیت را باز کنید
- Share کلیک کنید
- ایمیل OAuth یا Service Account را اضافه کنید
- دسترسی Editor بدهید
2. خطای "Requested entity was not found"
علت: Sheet ID اشتباه است
راهحل
- Sheet ID از URL بگیرید:
https://docs.google.com/spreadsheets/d/SHEET_ID_HERE/edit
- کپی کنید بخش بین
/d/و/edit
3. Range اشتباه است
علت: فرمت Range نادرست
راهحل
- فرمت صحیح:
Sheet1!A1:D10 - برای تمام ستونها:
Sheet1!A:D - برای یک ردیف:
Sheet1!A2:D2 - نام Sheet حساس به حروف بزرگ/کوچک است
4. خطای "Unable to parse range"
علت: نام Sheet فاصله دارد یا کاراکتر خاص
راهحل
- نام Sheet را در Single Quote بگذارید:
'My Sheet'!A1:D10
5. داده درست ذخیره نمیشود
علت: فرمت Values اشتباه
راهحل
- Values باید آرایه باشد:
[["value1", "value2", "value3"]] برای یک ردیف [["row1-col1", "row1-col2"], ["row2-col1", "row2-col2"]] برای چند ردیف
6. Append به جای نادرست میرود
علت: Range اشتباه یا شیت خالی نیست
راهحل
- Append به اولین ردیف خالی میرود
- Range را به ستونهای مورد نظر محدود کنید:
A:D
7. خطای Quota Exceeded
علت: درخواستهای زیادی در زمان کم
راهحل
- Google Sheets API: 100 درخواست/100 ثانیه/کاربر
- بین درخواستها تاخیر بگذارید (Wait Node)
- Batch operations استفاده کنید
