پرش به محتوا
کیاران
بازگشت به بلاگ
n8n 6 دقیقه مطالعه

مدیریت وظایف روزانه با n8n

فهرست کار در شیت هست، ولی یادآوری هنوز به حافظهٔ یک نفر وابسته است. مدیریت وظایف روزانه با n8n یعنی هر روز، سر یک ساعت، ردیف‌های باز خوانده شوند و فقط همان‌هایی که موعدشان امروز یا گذشته است به تلگرام یا ایمیل بروند. این کار با گزارش عددی هفته فرق دارد. جمع فروش و بازهٔ هفت روز را در گزارش هفتگی با n8n جدا توضیح داده‌ایم.

یادآوری روزانهٔ کارهای باز از روی شیت

برای اینکه مطمئن شوید مسیر درست است، دو ردیف آزمایشی بگذارید. ردیفی با موعد دیروز و وضعیت «باز» باید پیام بگیرد. ردیفی با وضعیت «انجام‌شد» نباید پیام بگیرد. اگر هیچ‌کدام پیام نگرفتند، اجرا سبز بوده ولی شرط اشتباه چیده شده است.

در n8n به این مسیر «ورک‌فلو» و به هر قطعه «نود» می‌گوییم. نام دکمه‌ها انگلیسی است. کنار هر نام، معنی فارسی‌اش را نوشته‌ایم.

۱. مدیریت وظایف روزانه با n8n از یک فهرست مشخص شروع می‌شود

قبل از چیدن نودها، ستون‌های شیت را ثابت کنید. ردیف اول فقط عنوان ستون است. نود خواندن ردیف (Get Row(s)) آن را به‌عنوان کار برنمی‌گرداند، مگر اینکه محل داده (Data Location on Sheet) را خودتان عوض کنید.

عنوان ستون در شیت نمونه به چه درد می‌خورد
عنوان پیگیری فاکتور ۱۲ همان متنی که در پیام می‌آید
مسئول مریم نام فرد. گیرندهٔ تلگرام را از روی این نام انتخاب نکنید، مگر اینکه شناسهٔ گفت‌وگو را جدا داشته باشید
موعد 2026-10-29 تاریخ را به شکل yyyy-MM-dd بنویسید، نه به شکل روز/ماه محلی
وضعیت باز فقط همین مقدار باید پیام بگیرد

زنجیرهٔ ساده این است: نود زمان‌بندی، خواندن ردیف از Google Sheets، یک شرط (IF)، بعد تلگرام یا ایمیل. اگر مسئله‌تان به‌جای موعد، تکراری بودن شمارهٔ فرم است، مسیر دیگری لازم دارید. آن را در اولین ورک‌فلو: فرم لید به شیت و تلگرام نوشته‌ایم.

۲. ساعت را مشخص کنید: هر روز، یا فقط روزهای کاری

اول منطقهٔ زمانی را درست کنید. از منوی Workflow به Settings بروید و Timezone را روی Asia/Tehran بگذارید. اگر این فیلد خالی بماند، ساعت ۸ ممکن است ساعت نیویورک باشد و یادآوری عصر به وقت تهران برسد. اختلاف دقیق ساعت را در مقالهٔ گزارش هفتگی گفته‌ایم. اینجا فقط همین فیلد را پر کنید.

اگر پیام باید هر هفت روز هفته برود، نوع تکرار (Trigger Interval) را Days بگذارید. فاصلهٔ روزها (Days Between Triggers) را ۱، ساعت (Trigger at Hour) را ۸ و دقیقه (Trigger at Minute) را ۰ بگذارید. این تنظیم جمعه را هم شامل می‌شود.

برای شنبه تا چهارشنبه، فاصلهٔ ثابت «هر یک روز» مناسب نیست، چون جمعه را حذف نمی‌کند. نوع تکرار را Custom (Cron) بگذارید. در نمونهٔ رسمی n8n عبارت 0 12 * * 1 یعنی ظهر دوشنبه. پس عدد ۱ دوشنبه است و عدد ۶ شنبه. عبارت شنبه تا چهارشنبه ساعت ۸ این است:

0 8 * * 6,0,1,2,3

دو عدد اول، دقیقه و ساعت هستند. عددهای آخر، روزهای هفته‌اند: شنبه، یکشنبه، دوشنبه، سه‌شنبه و چهارشنبه. این عبارت وقتی قطعی می‌شود که ورک‌فلو را منتشر کنید. دکمهٔ انتشار Publish است و در نسخه‌های قدیمی‌تر Active. تا این کار را نکنید، صبح‌ها پیامی نمی‌آید. اجرای دستی فقط ساخت مسیر را امتحان می‌کند.

۳. همهٔ ردیف‌های مطابق را برگردانید، نه فقط ردیف اول را

جدا کردن کارهای عقب‌افتاده قبل از ارسال یادآوری

در نود Google Sheets عملیات را Get Row(s) انتخاب کنید، یعنی خواندن ردیف‌ها. اگر فیلتر می‌گذارید، گزینهٔ When Filter Has Multiple Matches را روی Return All Matches بگذارید. معنی‌اش این است: اگر چند ردیف مطابق بود، همه را برگردان. حالت پیش‌فرض فقط اولین ردیف را برمی‌گرداند. علامت این اشتباه آرام است: ورک‌فلو هر روز سبز است، ولی فقط برای یک کار پیام می‌رود.

ستون موعد را تاریخِ خودِ Sheets نکنید. اگر هست، بدانید خروجی چه شکلی می‌آید. حالت Formatted Text از زبان فایل پیروی می‌کند و ممکن است 29/10/2026 بدهد. حالت Serial Number هم یک شمارهٔ روز از سال ۱۸۹۹ است، نه تاریخ خوانا. هیچ‌کدام با مقایسهٔ ساده با «امروز» یکی نمی‌شوند. برای این ورک‌فلو، موعد را متن yyyy-MM-dd نگه دارید.

۴. شرط را روی موعد و وضعیت بگذارید

نود IF خودش شیت را نمی‌خواند. خروجی نود قبلی را به دو شاخه تقسیم می‌کند: کارهایی که باید یادآوری شوند و بقیه. دو شرط را با AND بگذارید، یعنی هر دو باید درست باشند.

  • شرط اول: مقدار {{ $json['موعد'] }}، نوع Date & Time، عمل is before or equal to (امروز یا قبل از امروز)، طرف دوم {{ $now }}.
  • شرط دوم: مقدار {{ $json['وضعیت'] }} دقیقاً برابر باز.

شاخهٔ درست به تلگرام یا ایمیل می‌رود. شاخهٔ نادرست هیچ نود ارسالی نداشته باشد. اگر در شیت به‌جای «باز» مقدار «باز » با یک فاصلهٔ اضافه ذخیره شود، شرط دوم هیچ‌وقت برقرار نمی‌شود و به نظر می‌رسد مشکل از تاریخ است.

تاریخ پیام را با چسباندن متن به $now نسازید. عبارت "امروز " + $now به‌جای تاریخ یک عدد بلند نشان می‌دهد. از این شکل استفاده کنید:

{{ $now.setZone('Asia/Tehran').toFormat('yyyy-MM-dd') }}

برای این یادآوری معمولاً به نود Code نیازی نیست. اگر رفتید، بدانید آنجا format() وجود ندارد و minus(7, 'days') روز کم نمی‌کند.

۵. پیام را کوتاه بنویسید و توکن را بیرون از متن بگذارید

متن تلگرام سه چیز داشته باشد: عنوان، موعد و مسئول. توکن ربات در Credential همان نود Telegram می‌ماند. اگر توکن را در نود Set یا در متن پیام کپی کنید، با اولین ذخیرهٔ اجرا وارد تاریخچه می‌شود. جزئیات را در امنیت داده‌ها در n8n نوشته‌ایم.

برای هر ردیف یک پیام کافی است. گزارش «امروز چند کار باز ماند» را به این ورک‌فلو نچسبانید. آن جمع‌بندی به بازه و نود Summarize نیاز دارد و جایش گزارش هفتگی است، حتی اگر بخواهید نسخه‌ای از آن را هر شب بفرستید. دو کار متفاوت را در یک مسیر قاطی نکنید تا خراب شدن یکی، دیگری را هم ساکت نکند.

۶. صبحِ بدون پیام را با «کاری نبود» اشتباه نگیرید

اگر خواندن شیت به‌خاطر اطلاعات ورود یا دسترسی فایل خطا بدهد، پیامی نمی‌آید. این با روزی که واقعاً کار بازی نیست فرق دارد. یک ورک‌فلو جدا بسازید که با نود Error Trigger شروع شود و در Settings همین یادآوری، Error Workflow را به آن وصل کنید. پیام خطا نام ورک‌فلو و متن خطا را به کانال خودتان بفرستد، نه به کانال تیم. این دو مقدار workflow.name و execution.error.message هستند.

اگر نود زمان‌بندی را تازه اضافه کرده‌اید و گزینهٔ If Execution Is Missed را می‌بینید، برای یادآوری روزانه Run the Most Recent Missed Execution مناسب است. پیش‌فرض این است که همان صبحِ ازدست‌رفته اجرا نشود.

۷. یادآوری صبح به روشن بودن n8n در همان ساعت وابسته است

این مسیر فقط وقتی قابل اعتماد است که n8n ساعت ۸ روشن باشد. روی کیاران محیط هر مشتری جدا اجرا می‌شود و نگهداری و بکاپ هفتگیٔ پلن با سرویس است، نه با روشن ماندن رایانهٔ شما. طراحی فهرست و شرط با شماست. مشخصات اجرا در صفحهٔ n8n است.

جمع‌بندی

موعد را به شکل yyyy-MM-dd بنویسید و منطقهٔ زمانی را Asia/Tehran بگذارید. برای هر روز هفته، تکرار روزانه را انتخاب کنید. برای شنبه تا چهارشنبه از عبارت 0 8 * * 6,0,1,2,3 استفاده کنید. خواندن شیت را طوری بگذارید که همهٔ ردیف‌های مطابق برگردند. شرط را روی موعد و وضعیت «باز» بگذارید، ورک‌فلو را منتشر کنید و برای خطا یک پیام جدا داشته باشید.

پرسش‌های متداول

این ورک‌فلو جای گزارش هفتگی را می‌گیرد؟

نه. اینجا فهرست کار باز است. گزارش هفتگی جمع یک بازه است و به منبع داده و نود Summarize نیاز دارد. اگر هر دو را می‌خواهید، دو ورک‌فلو جدا بسازید تا خرابی یکی، دیگری را متوقف نکند.

چرا چند کار باز است ولی فقط یک یادآوری می‌آید؟

اغلب گزینهٔ When Filter Has Multiple Matches هنوز روی برگرداندن اولین نتیجه است. آن را Return All Matches کنید. اگر فیلتر ندارید و باز هم یک پیام می‌آید، وضعیت را دقیقاً باز چک کنید و ببینید شاخهٔ نادرستِ IF مسیر ارسال را قطع نکرده باشد.

برای این یادآوری باید برنامه‌نویسی بدانم؟

نه. زمان‌بندی، خواندن ردیف، شرط و تلگرام برای این مسیر کافی‌اند. نود Code را وقتی اضافه کنید که تاریخ شیت به شکل استاندارد نیست و باید آن را تبدیل کنید. در آن نود از fromISO یا fromFormat استفاده کنید، نه از new Date()، چون new Date() منطقهٔ زمانی ورک‌فلو را رعایت نمی‌کند.

یادآوری ساعت ۸ را به روشن بودن لپ‌تاپ گره نزنید

اگر n8n فقط روی رایانهٔ شما باشد، خاموش شدنش یعنی همان صبح پیامی نمی‌رود. پلن پایه آلمان کیاران ۷ روز بدون پرداخت است و محیط اختصاصی را جدا از دستگاه شما بالا نگه می‌دارد.

شروع ۷ روز رایگان · درخواست مشاوره

گفت‌وگو و دیدگاه‌ها

تجربه و پرسش خود را با دیگر خوانندگان در میان بگذارید.

۰

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. فیلدهای ضروری علامت‌گذاری شده‌اند.