【n8n教程】:Schedule Trigger节点,让工作流自动运行!

📌 什么是 Schedule Trigger(定时触发器)?

在日常工作中,是否有些任务需要定期重复?比如每天早上8点发送邮件汇总、每周一检查数据更新、或者每小时同步一次数据?

Schedule Trigger(定时触发器) 就是解决这类问题的完美工具。它让你的 n8n 工作流按照指定的时间表自动运行,就像 Unix 系统中的 Cron 一样。你不需要手动点击"执行"按钮,一切都会自动进行。


🎯 核心概念速览

概念说明
触发间隔定义工作流运行的时间单位(秒、分、小时、天、周、月或自定义 Cron 表达式)
时区n8n 使用工作流时区或实例时区来计算执行时间
激活状态工作流必须处于激活状态,Schedule Trigger 才能工作
Cron 表达式用于高级时间控制的标准 Unix 命令格式

⚙️ 五种基础调度方式

1️⃣ 按秒数触发

使用场景: 快速测试、高频数据同步

配置方式:

示例: 每10秒检查一次 API 状态


    
    
    
  秒数:10

2️⃣ 按分钟触发

使用场景: 定期检查系统状态、同步数据

配置方式:

示例: 每5分钟从 Google Sheets 中读取数据


    
    
    
  分钟数:5

3️⃣ 按小时触发

使用场景: 定期生成报告、每小时同步一次数据

配置方式:

示例: 每6小时在第30分钟时运行


    
    
    
  小时数:6
分钟数:30
(意味着:00:30, 06:30, 12:30, 18:30)

4️⃣ 按天数触发

使用场景: 每天定时发送邮件、每日数据备份

配置方式:

示例: 每两天在上午9点15分运行


    
    
    
  天数:2
小时:9
分钟:15
(意味着:周一 09:15, 周三 09:15, 周五 09:15...)

5️⃣ 按周数触发

使用场景: 每周定时任务、周期性报告

配置方式:

示例: 每两周在周一下午3点30分运行


    
    
    
  周数:2
工作日:周一
小时:15(3 PM)
分钟:30
(意味着:第1个周一 15:30, 第3个周一 15:30...)

🚀 高级用法:自定义 Cron 表达式

对于复杂的调度需求,你可以使用 Cron 表达式

📖 Cron 表达式结构

n8n 的 Cron 表达式有 6 个字段(包括秒):


    
    
    
  秒  分  小时  日期  月份  周几
*   *   *     *    *    *

🔧 常用 Cron 表达式示例

需求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 表达式

不确定如何写 Cron 表达式?访问 Crontab Guru[1] 网站,它提供了可视化编辑器,帮你快速生成和验证表达式。


🛠️ 快速开始:三步设置

步骤 1:添加 Schedule Trigger 节点

  1. 1. 打开或创建一个 n8n 工作流
  2. 2. 点击添加第一步加号按钮
  3. 3. 搜索 "Schedule Trigger""定时"
  4. 4. 从结果中选择 Schedule Trigger 节点

步骤 2:配置触发间隔

在节点的左侧面板中:

  1. 1. 选择 Trigger Interval(触发间隔)
  2. 2. 根据需求选择时间单位(天、周、月等)
  3. 3. 填入相应的时间参数

示例配置(每天早上8点运行):


    
    
    
  Trigger Interval: Days
Days Between Triggers: 1
Trigger at Hour: 8
Trigger at Minute: 0

步骤 3:连接后续节点和激活

  1. 1. 将你的业务逻辑节点(如发送邮件、更新数据库等)连接到 Schedule Trigger
  2. 2. 保存工作流
  3. 3. 点击工作流右上角的切换开关,将状态改为激活
  4. 4. 完成!工作流现在会按照你设定的时间表自动运行

⚠️ 常见问题与解决方案

❌ 问题 1:工作流在错误的时间运行

原因: 时区配置不正确

解决方案:


❌ 问题 2:Cron 表达式错误

错误提示: "Invalid cron expression"

解决方案:

  1. 1. 检查表达式语法是否正确
  2. 2. 在 Crontab Guru[1] 验证表达式
  3. 3. 确保表达式符合 n8n 的六字段格式(包括秒)

❌ 问题 3:修改触发间隔后没有生效

原因: 修改调度参数需要重新激活工作流才能生效

解决方案:

  1. 1. 将工作流切换为停用状态
  2. 2. 修改 Schedule Trigger 的参数
  3. 3. 再次将工作流切换为激活状态

重要提示: 工作流的执行时间从激活时刻开始计算。例如,如果你在 11:30 激活一个"每2小时"的工作流,它会在 13:30 首次运行。


❌ 问题 4:变量在 Cron 表达式中不生效

原因: 变量的值只在工作流激活时评估一次

解决方案: 如果需要修改变量值,必须:

  1. 1. 停用工作流
  2. 2. 修改变量值
  3. 3. 重新激活工作流

💼 实战案例:每日邮件提醒工作流

现在让我们一起构建一个实用的工作流:每天早上8点从 Google Sheets 读取待办事项,并发送邮件提醒

工作流结构


    
    
    
  Schedule Trigger (每天8点)
  ↓
Google Sheets: 读取待办事项
  ↓
Code: 格式化数据为 HTML
  ↓
Gmail: 发送邮件

完整工作流 JSON 代码


    
    
    
  {
  "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
          }

        ]

      ]

    }

  }

}

🔑 设置步骤

  1. 1. 添加 Schedule Trigger 节点
    • • 触发间隔:每天(Days)
    • • 时间:早上8点
    • • 保持其他默认设置
  2. 2. 配置 Google Sheets 节点
    • • 选择你的 Google Sheets 账户
    • • 输入你的电子表格 ID
    • • 选择包含待办事项的工作表名称(如 "Tasks")
    • • 列名称应包括:titledescriptionstatus
  3. 3. 配置 Code 节点
    • • 复制上面提供的代码
    • • 该代码会自动筛选状态为 "Pending" 的任务,并格式化为 HTML 列表
  4. 4. 配置 Gmail 节点
    • • 选择你的 Gmail 账户
    • • 填入接收邮件的电子邮件地址
    • • 主题:📨 今日待办事项提醒
    • • 邮件类型:HTML
    • • 邮件正文:链接到 Code 节点的 htmlBody 输出
  5. 5. 保存并激活
    • • 点击保存
    • • 点击右上角的激活开关
    • • 工作流现在会在每天早上8点自动运行

✅ 测试工作流

在完全依赖自动调度之前,先手动测试一下:

  1. 1. 点击任何节点的执行按钮
  2. 2. 检查输出数据是否符合预期
  3. 3. 查看邮件是否正确发送
  4. 4. 一切正常后,再激活工作流

📚 时区完全指南

为什么时区很重要?

如果你在纽约,但 n8n 实例在伦敦,时区差异可能导致工作流在错误的时间运行。

三层时区设置(优先级从高到低)

  1. 1. 工作流级别时区(最优先)
    • • 打开工作流 → 右上角三点菜单 → 设置
    • • 在 Timezone 下拉菜单选择你的时区
    • • 保存更改
  2. 2. n8n 实例时区(次优先)
    • • 云版本:进入 Admin 面板 → 设置 → 修改时区
    • • 自托管版本:设置环境变量 GENERIC_TIMEZONE

    示例(Linux/Mac):

    
        
        
        
      export GENERIC_TIMEZONE="Asia/Shanghai"
  3. 3. 系统时区(如果以上都未设置)
    • • 自托管默认为 "America/New_York"
    • • 云版本默认为 "GMT"

🌍 常用时区代码

地区时区代码
中国Asia/Shanghai
纽约America/New_York
伦敦Europe/London
东京Asia/Tokyo
悉尼Australia/Sydney
印度Asia/Kolkata
新加坡Asia/Singapore

🎓 最佳实践

✅ 应该这样做

  1. 1. 总是测试你的工作流——在完全自动化之前,使用手动执行测试
  2. 2. 选择低峰时段运行——避免在高流量时段执行资源密集型任务(比如半夜运行备份)
  3. 3. 使用明确的名称——给工作流起清晰的名字(如"Daily Email at 8 AM")
  4. 4. 监控执行日志——定期检查 Executions 标签,确保工作流按预期运行
  5. 5. 记录你的 Cron 表达式——在工作流中添加注释说明为什么选择这个时间表

❌ 应该避免

  1. 1. 不要在秒级频率下运行重型工作——会消耗大量资源
  2. 2. 不要忘记激活工作流——很多人设置后忘记激活
  3. 3. 不要在生产环境中测试——先在测试工作流中调试
  4. 4. 不要忽视时区问题——错误的时区会导致工作流在意想不到的时间运行
  5. 5. 不要使用太复杂的 Cron 表达式——使用基础配置往往更清晰可维护

🎯 总结

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