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

گزارش هفتگی با n8n

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

نمای یک مسیر خودکار برای گزارش هفتگی

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

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

۱. گزارش هفتگی با n8n را با همین پنج نود بسازید

نودها را به همین ترتیب بچینید. اگر جمع را قبل از محدود کردن تاریخ انجام دهید، مسیر بدون خطا اجرا می‌شود ولی عدد گزارش غلط است.

  1. نود زمان‌بندی (Schedule Trigger) فقط ساعت شروع را مشخص می‌کند.
  2. نود خواندن داده از Google Sheets، پایگاه داده، یا درخواست وب (HTTP Request). محدود کردن به هفت روز گذشته همین‌جا انجام می‌شود.
  3. نود جمع‌بندی (Summarize) برای مجموع، تعداد و میانگین. اگر شاخصی در این نود نبود، یک نود کدنویسی (Code) اضافه کنید.
  4. ساخت متن ایمیل. موضوع ایمیل تاریخ دارد و بدنه یک جدول کوتاه است.
  5. نود ارسال با ایمیل یا تلگرام. رمز و توکن را داخل متن پیام ننویسید. جایش در بخش اطلاعات ورود است که n8n به آن Credential می‌گوید. توضیحش در امنیت داده‌ها در n8n است.

۲. اول ساعت را به وقت تهران تنظیم کنید

نود زمان‌بندی از منطقهٔ زمانی همان ورک‌فلو استفاده می‌کند. اگر این فیلد خالی باشد، از ساعت خودِ سرور n8n استفاده می‌شود. در نصب معمولی، پیش‌فرض این ساعت America/New_York است، یعنی نیویورک.

نتیجه‌اش این است که شما «شنبه ساعت ۸» را انتخاب می‌کنید، اما ارسال طبق ساعت نیویورک انجام می‌شود. اختلاف تهران با نیویورک در نیمهٔ گرم سال حدود هفت ساعت و نیم است و در نیمهٔ سرد سال حدود هشت ساعت و نیم. گزارش به‌جای ۸ صبح، حدود ۱۵:۳۰ یا ۱۶:۳۰ به وقت تهران می‌رسد. برنامه خطا نشان نمی‌دهد. فقط گزارش دیر می‌رسد.

برای اصلاح، ورک‌فلو را باز کنید. منوی Workflow را بزنید، وارد Settings شوید و Timezone را روی Asia/Tehran بگذارید و ذخیره کنید. این تنظیم متعلق به همین ورک‌فلو است و لازم نیست چیزی را روی سرور تغییر دهید. ایران ساعت تابستانی ندارد و Asia/Tehran در تمام سال همان UTC+3:30 است.

۳. زمان‌بندی را هفتگی کنید و ورک‌فلو را منتشر کنید

روی نود زمان‌بندی یک قانون اجرا اضافه کنید. نام این بخش Trigger Rule است. نوع تکرار (Trigger Interval) را روی Weeks بگذارید، یعنی هفتگی.

در صفحهٔ n8n چه می‌بینید چه بگذارید یعنی چه
Weeks Between Triggers ۱ هر هفته یک‌بار، نه هر دو هفته
Trigger on Weekdays Saturday شنبه، شروع هفتهٔ کاری در ایران
Trigger at Hour ۸ ساعت ۸، طبق منطقهٔ زمانی همین ورک‌فلو
Trigger at Minute ۰ رأس ساعت

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

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

در نسخه‌های جدید، داخل تنظیمات همین نود گزینه‌ای هست به نام If Execution Is Missed، یعنی «اگر همان ساعت اجرا نشد چه شود». حالت پیش‌فرض، اجرای جامانده را کنار می‌گذارد. برای گزارش هفتگی بهتر است Run the Most Recent Missed Execution را انتخاب کنید تا اگر محیط همان لحظه در دسترس نبود، نزدیک‌ترین اجرای ازدست‌رفته یک‌بار جبران شود. اگر این گزینه را نمی‌بینید، همان رفتار پیش‌فرض فعال است و اجرای جامانده ساخته نمی‌شود.

۴. هفت روز گذشته را موقع خواندن داده محدود کنید

خواندن دادهٔ هفت روز گذشته پیش از فرستادن گزارش

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

{{ $now.setZone('Asia/Tehran').minus({ days: 7 }).toISO() }}

$now یعنی همین الان. setZone ساعت را به تهران می‌برد و minus هفت روز عقب می‌رود. خروجی شبیه 2026-10-23T08:00:00.000+03:30 است. این مقدار را در فیلتر شیت یا در پارامتر پرس‌وجوی پایگاه بگذارید، نه داخل جملهٔ ایمیل.

برای تاریخِ موضوع ایمیل از این شکل استفاده کنید. اگر متن را با علامت جمع به $now بچسبانید، به‌جای تاریخ یک عدد بلند می‌بینید.

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

اگر منبع، پایگاه Postgres یا MySQL است، تابع NOW() پایگاه را با ساعت ورک‌فلو یکی ندانید. ساعت پایگاه ممکن است UTC باشد. تاریخ را داخل متن SQL نچسبانید. مقدار عبارت را در پارامتر نود بگذارید و در SQL فقط جای همان پارامتر را بنویسید.

اگر منبع Google Sheets است، ستون تاریخ را به شکل yyyy-MM-dd نگه دارید، مثل 2026-10-23. خروجی پیش‌فرض شیت از تنظیمات زبان فایل پیروی می‌کند و مقایسهٔ 23/10/2026 با تاریخ استاندارد اغلب غلط می‌شود.

فقط اگر سراغ نود Code رفتید این را بدانید: نوشتن minus(7, 'days') آنجا هفت روز کم نمی‌کند. شکل درست minus({ days: 7 }) است. برای ساختن متن تاریخ هم در Code از toFormat استفاده کنید، نه از format.

۵. عددها را جمع کنید و ایمیل را کوتاه نگه دارید

برای مجموع فروش، تعداد سفارش و میانگین، نود Summarize کافی است. اگر داده از چند جا می‌آید، اول با نود Merge کنار هم بگذاریدشان و بعد جمع بزنید. نود Code را وقتی اضافه کنید که شاخص در Summarize نیست. نمونهٔ رایج، اختلاف با هفتهٔ قبل است. برای آن باید یک‌بار دیگر دادهٔ ۱۴ روز قبل تا ۷ روز قبل را بخوانید. جمعِ کلِ تاریخچه، «هفتهٔ قبل» نیست.

بدنهٔ ایمیل را کوتاه نگه دارید: عنوان، شروع بازه، پایان بازه و همان چند عدد. پیوست فایل لازم نیست. جدول خیلی عریض در موبایل خوانده نمی‌شود.

۶. خطای منبع را از «این هفته فروشی نبود» جدا کنید

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

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

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

۷. زمان‌بندی به محیطی نیاز دارد که همان ساعت روشن باشد

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

جمع‌بندی

منطقهٔ زمانی ورک‌فلو را Asia/Tehran بگذارید. تکرار را هفتگی کنید، روز را شنبه و ساعت را ۸. هفت روز گذشته را هنگام خواندن داده محدود کنید، نه در متن ایمیل. ورک‌فلو را منتشر کنید و یک مسیر جدا برای خطای منبع بگذارید تا سکوتِ سرویس با سکوتِ «این هفته فروشی نبود» یکی نشود.

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

اگر محیط در ساعت گزارش در دسترس نباشد چه می‌شود؟

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

برای این گزارش باید برنامه‌نویسی بدانم؟

نه، تا وقتی مجموع و تعداد و میانگین کافی است. نود Code فقط وقتی لازم می‌شود که شاخص در Summarize نباشد. در همان نود، تاریخ را با minus({ days: 7 }) حساب کنید.

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

بله. نود آخر را Telegram بگذارید و عملیات Send Message را انتخاب کنید. توکن ربات در Credential می‌ماند، نه در متن پیام. برای چند عدد، ایمیل با جدول خواناتر است. تلگرام برای یک پاراگراف کوتاه مناسب‌تر است.

گزارش شنبه را روی محیطی بسازید که همان ساعت روشن است

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

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

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

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

۰

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

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