在日常工作中,是否有些任务需要定期重复?比如每天早上8点发送邮件汇总、每周一检查数据更新、或者每小时同步一次数据?
Schedule Trigger(定时触发器) 就是解决这类问题的完美工具。它让你的 n8n 工作流按照指定的时间表自动运行,就像 Unix 系统中的 Cron 一样。你不需要手动点击"执行"按钮,一切都会自动进行。
| 概念 | 说明 |
|---|---|
| 触发间隔 | 定义工作流运行的时间单位(秒、分、小时、天、周、月或自定义 Cron 表达式) |
| 时区 | n8n 使用工作流时区或实例时区来计算执行时间 |
| 激活状态 | 工作流必须处于激活状态,Schedule Trigger 才能工作 |
| Cron 表达式 | 用于高级时间控制的标准 Unix 命令格式 |
使用场景: 快速测试、高频数据同步
配置方式:
30 = 每30秒运行一次)示例: 每10秒检查一次 API 状态
秒数:10使用场景: 定期检查系统状态、同步数据
配置方式:
5 = 每5分钟运行一次)示例: 每5分钟从 Google Sheets 中读取数据
分钟数:5使用场景: 定期生成报告、每小时同步一次数据
配置方式:
示例: 每6小时在第30分钟时运行
小时数:6
分钟数:30
(意味着:00:30, 06:30, 12:30, 18:30)使用场景: 每天定时发送邮件、每日数据备份
配置方式:
示例: 每两天在上午9点15分运行
天数:2
小时:9
分钟:15
(意味着:周一 09:15, 周三 09:15, 周五 09:15...)使用场景: 每周定时任务、周期性报告
配置方式:
示例: 每两周在周一下午3点30分运行
周数:2
工作日:周一
小时:15(3 PM)
分钟:30
(意味着:第1个周一 15:30, 第3个周一 15:30...)对于复杂的调度需求,你可以使用 Cron 表达式。
n8n 的 Cron 表达式有 6 个字段(包括秒):
秒 分 小时 日期 月份 周几
* * * * * *| 需求 | Cron 表达式 | 说明 |
|---|---|---|
| 每10秒 | */10 * * * * * | 从每分钟的第10秒开始,每隔10秒运行 |
| 每5分钟 | */5 * * * * | 每5分钟运行一次 |
| 每小时 | 0 * * * * | 每小时的整点运行 |
| 每天6点 | 0 6 * * * | 每天早上6点运行 |
| 每周一12点 | 0 12 * * 1 | 每周一中午12点运行 |
| 每月1号 | 0 0 1 * * | 每月1号午夜运行 |
| 每3天 | 0 0 */3 * * | 每隔3天午夜运行 |
| 工作日9点 | 0 9 * * 1-5 | 周一到周五上午9点运行 |
| 工作时间每小时 | 0 9-17 * * * | 每天9点到17点(工作时间),每小时整点运行 |
| 按季度运行 | 0 0 1 1,4,7,10 * | 1月、4月、7月、10月的1号午夜运行 |
不确定如何写 Cron 表达式?访问 Crontab Guru[1] 网站,它提供了可视化编辑器,帮你快速生成和验证表达式。
在节点的左侧面板中:
示例配置(每天早上8点运行):
Trigger Interval: Days
Days Between Triggers: 1
Trigger at Hour: 8
Trigger at Minute: 0原因: 时区配置不正确
解决方案:
错误提示: "Invalid cron expression"
解决方案:
原因: 修改调度参数需要重新激活工作流才能生效
解决方案:
重要提示: 工作流的执行时间从激活时刻开始计算。例如,如果你在 11:30 激活一个"每2小时"的工作流,它会在 13:30 首次运行。
原因: 变量的值只在工作流激活时评估一次
解决方案: 如果需要修改变量值,必须:
现在让我们一起构建一个实用的工作流:每天早上8点从 Google Sheets 读取待办事项,并发送邮件提醒
Schedule Trigger (每天8点)
↓
Google Sheets: 读取待办事项
↓
Code: 格式化数据为 HTML
↓
Gmail: 发送邮件{
"nodes": [
{
"parameters": {
"triggerInterval": "days",
"daysInterval": 1,
"triggerAtHour": 8,
"triggerAtMinute": 0
},
"id": "1",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"resource": "spreadsheet",
"operation": "read",
"spreadsheetId": "YOUR_SHEET_ID",
"sheetName": "Tasks",
"options": {}
},
"id": "2",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 3,
"position": [
450,
300
]
},
{
"parameters": {
"code": "// 格式化待办事项为 HTML\nconst tasks = $input.all();\nlet htmlContent = '<h2>📋 今日待办事项</h2><ul>';\n\ntasks.forEach(task => {\n if (task.json.status === 'Pending') {\n htmlContent += `<li><strong>${task.json.title}</strong> - ${task.json.description}</li>`;\n }\n});\n\nhtmlContent += '</ul>';\n\nreturn [{ json: { htmlBody: htmlContent } }];"
},
"id": "3",
"name": "Code",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
650,
300
]
},
{
"parameters": {
"operation": "sendEmail",
"toEmail": "your-email@example.com",
"subject": "📨 今日待办事项提醒",
"emailType": "html",
"htmlBody": "={{ $node[\"Code\"].json.htmlBody }}"
},
"id": "4",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2,
"position": [
850,
300
]
}
],
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
}
}
}title、description、status📨 今日待办事项提醒htmlBody 输出在完全依赖自动调度之前,先手动测试一下:
如果你在纽约,但 n8n 实例在伦敦,时区差异可能导致工作流在错误的时间运行。
GENERIC_TIMEZONE示例(Linux/Mac):
export GENERIC_TIMEZONE="Asia/Shanghai"| 地区 | 时区代码 |
|---|---|
| 中国 | Asia/Shanghai |
| 纽约 | America/New_York |
| 伦敦 | Europe/London |
| 东京 | Asia/Tokyo |
| 悉尼 | Australia/Sydney |
| 印度 | Asia/Kolkata |
| 新加坡 | Asia/Singapore |
Schedule Trigger 是 n8n 中最强大的功能之一,它将一次性任务转变为持久的自动化流程。通过掌握以下几点,你可以构建无数有用的自动化:
[1] Crontab Guru: https://crontab.guru/
[2] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/
[3] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B