教學 n8n

n8n 排程教學:Schedule Trigger 定時執行、Cron 寫法與時區設定

用 n8n 的 Schedule Trigger 讓工作流程每天、每週、每月自動執行:各種間隔怎麼設、Cron 表達式怎麼寫、排程晚了 12 小時是哪裡的時區沒設,以及 n8n 2.x 要按 Publish 排程才會生效。附每天早上 8 點寄匯率 Email 的可匯入範例與排查順序。

RoamerHost 營運團隊 18 分鐘閱讀
想直接開始?n8n 託管,60 秒自動部署 工作流程自動化平台。平均每月 NT$499 起(年繳方案) 立即訂閱 n8n
本文目錄

這篇帶你用 n8n 的 Schedule Trigger 節點,讓工作流程在固定時間自己跑起來:每 15 分鐘檢查一次訂單、每天早上 8 點寄一封彙整信、平日早上 9 點發提醒、每月 1 號跑月結。你需要一台登入得了編輯器的 n8n,自架或託管都可以,會拖節點、接線就夠了;還沒做過工作流程的話,建議先看建立第一個工作流程。照著做完,你會知道每種間隔怎麼設、Cron 表達式怎麼寫、為什麼很多人的排程會晚 12 個小時才跑,以及在 n8n 2.x 為什麼一定要按 Publish,排程才會真的開始運作。

資料查證至 2026 年 10 月,依 n8n 官方文件與 2.43 版實際操作整理。介面上的按鈕與欄位保留英文原名,方便你對照畫面。

把 Schedule Trigger 放進工作流程

新增一個工作流程後,畫布中間會有一個加號,點下去會打開「要用什麼觸發這個流程」的選單。排程這一項在選單裡叫 On a schedule,旁邊的說明寫著 Runs the flow every day, hour, or custom interval;直接在搜尋框打 schedule 或 cron 也找得到。加進畫布之後,節點的名字是 Schedule Trigger。打開它,最上面有一行灰色提示,意思是這個工作流程要在你發佈(publish)之後才會照排程執行,測試時可以回到畫布按 Execute workflow 手動跑。這行提示很關鍵,後面有一整節在講它。

節點的主要設定叫 Trigger Rules,每一條規則由 Trigger Interval(間隔單位)加上幾個時間欄位組成,預設是 Days,也就是每天跑一次。同一個節點可以按 Add Rule 疊好幾條規則,例如平日早上 9 點一條、週六中午一條,任何一條的時間到了,都會觸發同一個流程。需要「同一件事、不同時間」時,用多條規則會比複製好幾個流程好管理得多。

每種間隔要填什麼

Trigger Interval 有 Seconds、Minutes、Hours、Days、Weeks、Months 和 Custom (Cron) 七個選項,選了哪一個,下面就會換成對應的欄位。下表是 2.43 版實際看到的欄位名稱,最右邊是填法的例子:

Trigger Interval要填的欄位填法例子
SecondsSeconds Between Triggers(1~59)填 10,每 10 秒一次
MinutesMinutes Between Triggers(1~59)填 15,每 15 分鐘一次
HoursHours Between Triggers(1~23)、Trigger at Minute6 和 30,每 6 小時在 30 分時跑
DaysDays Between Triggers、Trigger at Hour、Trigger at Minute1、8am、0,每天早上 8:00
WeeksWeeks Between Triggers、Trigger on Weekdays、Trigger at Hour、Trigger at Minute1、勾 Monday、9am、0,每週一 9:00
MonthsMonths Between Triggers、Trigger at Day of Month(1~31)、Trigger at Hour、Trigger at Minute1、1、10am、0,每月 1 號 10:00
Custom (Cron)Expression0 9 * * 1-5,平日早上 9:00

第一次設定時有幾個地方很容易弄錯。Trigger at Hour 是下拉選單,用的是 12 小時制,選項長得像 8am、Noon、3pm,下午三點要選 3pm,選成 3am 就變凌晨。Months 的 Trigger at Day of Month 如果填 29 到 31 號,遇到沒有這一天的月份,那個月就不會跑;官方文件舉的例子是填 30 號,二月整個月都不會觸發。所以「每月最後一天」別用這個欄位,下一節有替代寫法。Seconds 和 Minutes 的上限都是 59,想要每兩小時跑一次,就改用 Hours。

另外有一個 2.45 版開始的改變值得先知道。舊的排程器會把「每 N 秒」「每 N 分鐘」對齊時鐘,每 15 分鐘就固定在每小時的 00、15、30、45 分觸發;n8n 2.45.0 起預設改用新的 durable scheduler,這兩種間隔改成從你發佈工作流程的那一刻開始等距計算,例如 10:07 發佈,就會在 10:22、10:37 這樣的時間跑。Cron 表達式不受這個改變影響。如果你在意整點、15 分、30 分這種對齊的時間,直接用 Cron 的 */15 * * * * 最保險,不管哪個版本都一樣。

Cron 表達式怎麼寫

選 Custom (Cron) 之後只剩一個 Expression 欄位,欄位下方的提示寫著格式是 ([Second]) [Minute] [Hour] [Day of Month] [Month] [Day of Week]。一般寫五欄就好,依序是分、時、日、月、星期;最前面可以再加一欄秒變成六欄,不寫秒也會正常執行。星期的部分 0 是星期日、1 是星期一,一直到 6 是星期六,也可以寫英文縮寫,例如 MON-FRI。

┌───────── 分(0-59)
│ ┌─────── 時(0-23)
│ │ ┌───── 日(1-31)
│ │ │ ┌─── 月(1-12)
│ │ │ │ ┌─ 星期(0-6,0 是星期日)
│ │ │ │ │
0 9 * * 1-5

符號只要記四個:星號 * 代表「每一個」;逗號列出多個值,1,15 是 1 號和 15 號;連字號是範圍,9-17 是 9 點到 17 點;斜線是間隔,*/15 是每 15 個單位。小時用 24 小時制,下午 6 點要寫 18。

下面是台灣上班族最常用到的幾組。每一組我們都丟進 n8n 2.43 內建的 Cron 解析器,算過接下來三次的執行時間,確認是對的:

需求Cron 表達式
平日(週一到週五)早上 9 點0 9 * * 1-5
每月 1 號早上 9 點0 9 1 * *
每 15 分鐘,對齊 00、15、30、45 分*/15 * * * *
平日上班時間每 30 分鐘(9:00 到 17:30)*/30 9-17 * * 1-5
每週一早上 8 點(週報)0 8 * * 1
平日中午 12 點0 12 * * 1-5
每兩小時整點0 */2 * * *
每季第一天午夜(1、4、7、10 月 1 號)0 0 1 1,4,7,10 *

寫好之後可以貼到 crontab.guru 檢查,它會用英文說明這串表達式什麼時候跑。如果你寫的是六欄,貼過去之前先把最前面的秒拿掉,crontab.guru 只認五欄。

「每月最後一天」是很常見的需求,很多 Cron 教學會教你用 L,但 n8n 用的解析器不認得它。我們在 2.43 實測,0 9 L * * 會被判定為無效,節點顯示 Invalid cron expression。變通的做法是讓排程在每月 28 到 31 號都跑,後面接一個 IF 節點判斷「明天是不是 1 號」,是的話才往下走:

Schedule Trigger → Custom (Cron)
  Expression:0 18 28-31 * *

IF 節點 → 條件選 Number → is equal to
  左邊:{{ $now.plus({ days: 1 }).day }}
  右邊:1

這個判斷靠的是 $now,而 $now 要準,前提是時區設對了,不然「明天」會算成別的地方的明天。這就接到排程最常出事的地方。

時區:排程晚了 12 個小時,多半是這裡沒設

Schedule Trigger 本身沒有時區欄位,它照的是 n8n 的時區設定,順序是這樣:工作流程設定裡有指定 Timezone,就用工作流程的;沒有指定,就用整台 n8n 的時區,也就是環境變數 GENERIC_TIMEZONE;兩個都沒設,自架的 n8n 預設是 America/New_York,也就是紐約時間。

所以自己用 Docker 架、沒設 GENERIC_TIMEZONE 的人,設了「每天早上 8 點」,實際跑的是紐約的早上 8 點,換成台灣時間是晚上 8 點;美國夏令時間結束後兩地差 13 小時,就變成晚上 9 點。看起來像排程壞掉,其實只是時區。n8n Cloud 則是在註冊時嘗試偵測你所在的時區,偵測不到就用 GMT,也可以在 Cloud 的管理後台改。

想確認現在用的是哪個時區,有兩個很快的方法。第一個是打開工作流程右上角三個點的選單,選 Settings,看 Timezone 下拉選單的預設項目,寫著 Default - America/New_York,就代表整台 n8n 的時區從來沒設過。第二個是看 Schedule Trigger 的輸出:在節點裡手動執行一次,輸出資料裡有一個 Timezone 欄位,會寫成像 Asia/Taipei (UTC+08:00) 這樣,一眼就看得出來。

自架的修法是在 n8n 容器加上環境變數。官方的 Docker 安裝說明同時設了兩個:GENERIC_TIMEZONE 給排程類節點用,TZ 則是容器的系統時區,影響 date 這類指令和腳本拿到的時間。用 docker compose 的話,在 n8n 服務底下加上:

services:
  n8n:
    # 其他設定照舊,只要在 environment 加上這兩行
    environment:
      - GENERIC_TIMEZONE=Asia/Taipei
      - TZ=Asia/Taipei

改完執行 docker compose up -d 重建容器才會生效,只重新整理瀏覽器是沒用的。重建之後,隔天到執行紀錄看時間點對不對;如果還是怪怪的,把排程流程取消發佈再發佈一次,讓它用新的時區重新登記排程。

同一台 n8n 上如果有流程要照別的國家時間跑,例如每天在美股開盤前寄一封信,就用工作流程設定裡的 Timezone 單獨指定,選好按 Save。這個設定只影響這一個工作流程,其他流程照舊用整台的時區。

還有一個容易混在一起的問題出在 Code 節點。JavaScript 原生的 new Date() 不理會工作流程的時區設定,官方文件也特別寫了這點;它照的是系統時區,而 Docker 容器沒設 TZ 時通常是 UTC,比台灣慢 8 小時。在表達式和 Code 節點裡處理日期,請改用 n8n 內建的 $now、$today,它們是 Luxon 的日期物件,會照 n8n 的時區走,例如 {{ $now.toFormat('yyyy/MM/dd HH:mm') }} 就會得到台灣時間的日期與時刻。

RoamerHost 託管的 n8n 已經預設 GENERIC_TIMEZONE=Asia/Taipei,新建的排程直接就是台灣時間,Timezone 的預設項目會顯示 Default - Asia/Taipei,不用另外設定。

n8n 2.x 一定要按 Publish,排程才會跑

這是從 1.x 升上來的人最常卡住的地方。n8n 1.x 的工作流程右上角有一個 Active 開關,打開就上線,之後每次存檔都直接改到正在跑的版本。2.0 版(2025 年 12 月推出)把這件事拆成兩步:編輯的內容會自動存成草稿,正式環境跑的則是你「發佈」的那個版本。原本的 Active 開關不見了,換成畫布上方標題列的 Publish 按鈕。

流程測好之後按 Publish(快速鍵 Shift + P),會跳出 Publish workflow 視窗,可以替這個版本取名字、寫一段改了什麼的說明。確認之後按鈕會短暫顯示 Publishing…,觸發條件登記完成就會變成 Published。從這一刻起,Schedule Trigger 才會照時間觸發。

最常見的誤會有兩個。第一,在編輯器按 Execute workflow 手動跑成功,只代表流程本身沒問題,排程並沒有因此上線。第二,已經發佈的流程改了排程時間,畫面上看起來改好了,但改動還停在草稿,正式環境照樣用舊的時間跑;只要有還沒發佈的變更,Publish 按鈕就會亮起來,記得再按一次。官方文件另外提到,改了間隔重新發佈之後,新的間隔是從發佈那一刻開始算:原本每 1 小時、預定 12:00 要跑,你在 11:30 改成每 2 小時並發佈,下一次會在 13:30。

要暫停排程,從 Publish 按鈕旁的下拉箭頭選 Unpublish(快速鍵 Ctrl 或 Cmd + U),在工作流程列表上也能操作。發佈時如果有節點設定不完整,n8n 會要求你先修好有問題的節點;如果有部分觸發條件登記失敗,流程會顯示為部分發佈,修好之後再按一次 Publish 就會重試。還在用 1.x 的人,流程頁右上角仍然是 Active 開關,打開就等於發佈。

實作:每天早上 8 點抓匯率寄成 Email

用一個實際的例子把上面串起來:每天早上 8 點抓一次美元、日圓、歐元兌新台幣的參考匯率,整理成一封信寄到你的信箱。資料來源用 ExchangeRate-API 的免金鑰公開端點,不用註冊;寄信用 Send Email 節點走 Gmail 的 SMTP。整個流程只有四個節點,大約 15 分鐘做得完。

  1. Schedule Trigger:Trigger Interval 選 Days,Days Between Triggers 填 1,Trigger at Hour 選 8am,Trigger at Minute 填 0。只想平日寄的話改成 Custom (Cron),Expression 填 0 8 * * 1-5。
  2. HTTP Request:Method 維持 GET,URL 填 https://open.er-api.com/v6/latest/USD,其他不用動。按 Execute step 測一次,右邊會看到 rates 物件,裡面是 1 美元可以換多少各國貨幣,新台幣在 rates.TWD。
  3. Edit Fields:新增四個欄位,型別都選 String,把值切到 Expression 之後,貼上下面的表達式。日圓用每 100 元為單位,比較好讀。
  4. Send Email:Credential 選 Create new credential,User 填 Gmail 地址,Password 填應用程式密碼,Host 填 smtp.gmail.com,Port 用 465 並打開 SSL/TLS。From Email、To Email 填好,Email Format 選 HTML,Subject 和 HTML 一樣切到 Expression 再貼上範例內容,{{ }} 裡的欄位才會被換成數字。
  5. 測試與發佈:按畫布下方的 Execute workflow 手動跑一次,確認收到信、數字合理,再按 Publish。隔天早上 8 點過後,到流程上方的 Executions 分頁看有沒有多一筆執行紀錄。

Edit Fields 的四個欄位(左邊是欄位名稱,右邊是值):

usd      {{ $json.rates.TWD.toFixed(2) }}
jpy100   {{ ($json.rates.TWD / $json.rates.JPY * 100).toFixed(2) }}
eur      {{ ($json.rates.TWD / $json.rates.EUR).toFixed(2) }}
updated  {{ DateTime.fromSeconds($json.time_last_update_unix).setZone('Asia/Taipei').toFormat('yyyy/MM/dd HH:mm') }}

Send Email 的主旨與內文:

Subject:
今日匯率 {{ $now.toFormat('yyyy/MM/dd') }}

HTML:
<p>早安,以下是今天的參考匯率(1 單位外幣可換多少新台幣):</p>
<p>美元 USD:{{ $json.usd }}<br>日圓 JPY(每 100 元):{{ $json.jpy100 }}<br>歐元 EUR:{{ $json.eur }}</p>
<p><small>資料更新時間:{{ $json.updated }}(台北時間)<br>Rates By <a href="https://www.exchangerate-api.com">Exchange Rate API</a></small></p>

Gmail 的應用程式密碼要先在 Google 帳戶開啟兩步驟驗證,才能到 App passwords 頁面產生,產生出來是一串 16 個字元的密碼,跟你平常登入 Gmail 的密碼是兩回事。公司用 Google Workspace 的話,管理員可能把這個功能關掉了,找不到選項就要先問 IT。Send Email 節點 2.1 版預設會在信尾加一行 This email was sent automatically with n8n,不想要的話在 Options 加入 Append n8n Attribution 並關掉。

這個匯率 API 每天只更新一次。依我們查看時的回應,更新時間落在台灣時間早上 8 點過後幾分鐘,所以 8 點整抓到的有可能還是前一天的數字。範例把資料更新時間寫進信裡,看一眼就知道是哪天的資料;在意的話把排程改成 8:30。它的使用條款要求在顯示匯率的地方附上來源連結,範例信尾那行 Rates By Exchange Rate API 就是為了這個。這是參考匯率,實際換匯請以銀行牌告為準。

不想一個一個節點設定的話,下面這段可以直接匯入:整段複製,在 n8n 畫布上按 Ctrl 或 Cmd + V 貼上,四個節點會連好線出現在畫布上。貼上之後還要做三件事:在 Send Email 節點選好 SMTP 憑證、改掉寄件與收件地址、到工作流程設定確認 Timezone。這段 JSON 我們在 n8n 2.43.8 匯入並實際執行過前三個節點,Edit Fields 輸出的是像 32.59、20.70、36.46 這樣已經算好的數字。

{
  "name": "每日匯率 Email",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "triggerAtHour": 8,
              "triggerAtMinute": 0
            }
          ]
        }
      },
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "url": "https://open.er-api.com/v6/latest/USD",
        "options": {}
      },
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "f1",
              "name": "usd",
              "value": "={{ $json.rates.TWD.toFixed(2) }}",
              "type": "string"
            },
            {
              "id": "f2",
              "name": "jpy100",
              "value": "={{ ($json.rates.TWD / $json.rates.JPY * 100).toFixed(2) }}",
              "type": "string"
            },
            {
              "id": "f3",
              "name": "eur",
              "value": "={{ ($json.rates.TWD / $json.rates.EUR).toFixed(2) }}",
              "type": "string"
            },
            {
              "id": "f4",
              "name": "updated",
              "value": "={{ DateTime.fromSeconds($json.time_last_update_unix).setZone('Asia/Taipei').toFormat('yyyy/MM/dd HH:mm') }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        440,
        0
      ]
    },
    {
      "parameters": {
        "fromEmail": "[email protected]",
        "toEmail": "[email protected]",
        "subject": "=今日匯率 {{ $now.toFormat('yyyy/MM/dd') }}",
        "html": "=<p>早安,以下是今天的參考匯率(1 單位外幣可換多少新台幣):</p>\n<p>美元 USD:{{ $json.usd }}<br>日圓 JPY(每 100 元):{{ $json.jpy100 }}<br>歐元 EUR:{{ $json.eur }}</p>\n<p><small>資料更新時間:{{ $json.updated }}(台北時間)<br>Rates By <a href=\"https://www.exchangerate-api.com\">Exchange Rate API</a></small></p>",
        "options": {
          "appendAttribution": false
        }
      },
      "name": "Send Email",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        660,
        0
      ]
    }
  ],
  "connections": {
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Send Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

排程沒跑:照這個順序查

排程沒照預期執行,多數時候是下面前三項之一。照順序往下查,通常幾分鐘就找得到原因:

  1. 有沒有發佈。在工作流程列表看狀態是不是 Published,再打開流程看 Publish 按鈕是不是亮著,亮著代表有變更還沒發佈。改過排程卻沒重新發佈,正式環境還在跑舊設定。
  2. Executions 分頁有沒有紀錄。切到流程上方的 Executions 分頁。有紀錄但是失敗,代表排程有跑、是後面的節點出錯,點進去看是哪個節點、錯誤訊息寫什麼;完全沒有紀錄,再往下查。
  3. 時間點是不是差了 12 或 13 小時。有紀錄但時間不對,回到上面的時區那一節,最快的判斷是看 Schedule Trigger 輸出的 Timezone 欄位。
  4. 成功的紀錄是不是沒存。工作流程設定的 Save successful production executions 如果設成 Do not save,或主機設了 EXECUTIONS_DATA_SAVE_ON_SUCCESS=none,成功的執行不會留下紀錄,看起來就像沒跑。這時去看信箱、試算表這些「結果」有沒有出現,會比看紀錄準。
  5. 那個時間點 n8n 有沒有在運作。2.45 以前預設的排程器不會把排程寫進資料庫,主機重開、容器更新那段時間到點的排程會直接跳過,不會補跑。2.45.0 起預設的 durable scheduler 會先把排程寫進資料庫,稍微遲到(預設 60 秒內)仍會執行;更晚的話,由 Schedule Trigger 節點 Settings 分頁的 If Execution Is Missed 決定要不要補跑一次,預設是不補。這個選項只有 2.36 之後新增的 Schedule Trigger 節點才有。
  6. Cron 或日期本身有問題。Months 填了 29 到 31 號,遇到沒有那天的月份就不會跑;Cron 寫錯會出現 Invalid cron expression。用 n8n 的變數組 Cron 的話,變數的值只在發佈時讀一次,改了變數要取消發佈再重新發佈。
  7. 同一時間是不是擠了太多流程。自架時如果設了 N8N_CONCURRENCY_PRODUCTION_LIMIT,超過上限的執行會排隊,整點同時觸發很多流程時就會看到延遲。把不急的流程錯開幾分鐘就好。

避免重複執行,也別讓執行紀錄爆量

同一個排程跑了兩次,原因通常出在設定。第一種是把流程複製一份來測試,結果兩份都發佈了,兩邊各寄一封信。第二種是搬家:新主機已經匯入並發佈流程,舊主機卻還開著,同一個排程在兩台機器上各跑一次,搬完第一件事就是把舊主機的流程全部取消發佈,或直接停掉舊的 n8n。第三種是同一個 Schedule Trigger 裡有兩條重疊的 Trigger Rules,例如一條每天 9 點、一條平日 9 點,平日就會跑兩次。

另一種情況是執行時間比間隔還長。Schedule Trigger 時間一到就會開一次新的執行,不會等上一次跑完,每 1 分鐘觸發、每次要跑 3 分鐘的流程,同一時間就會有好幾次疊在一起,對同一批資料重複處理。間隔要明顯比流程平常的執行時間長;專門處理「新進資料」的流程,可以加一個 Remove Duplicates 節點,Operation 選 Remove Items Processed in Previous Executions,用訂單編號這類唯一值去重,處理過的就不會再處理一次。

排程頻率也直接決定執行紀錄長多快。每 15 分鐘跑一次,一天 96 筆,一個月將近 2,900 筆;每分鐘跑一次,一天就是 1,440 筆,一個月超過 4 萬筆,而且每一筆都存著每個節點的輸入與輸出。自架的 n8n 預設會清掉超過 336 小時(14 天)的紀錄、總數最多留 10,000 筆,高頻排程很快就會碰到這個上限,資料庫也跟著變大。排程流程最划算的做法,是在工作流程設定把 Save successful production executions 設成 Do not save,失敗的照樣保存,出事時還是查得到;更完整的清理方式寫在n8n 執行紀錄膨脹與清理。

最後也值得想一下,這件事真的需要排程嗎?每分鐘去問一次「有沒有新訂單」,如果對方系統能在有新訂單時主動通知你,改用 Webhook 會更即時,也幾乎不會產生多餘的執行紀錄,做法在 n8n Webhook 與第三方串接。排程適合本來就該定時做的事:日報、週報、月結、定期備份資料、固定時間的提醒。想讓 AI 幫你整理每天抓回來的資料,也可以在排程後面接 AI 節點,做法見 n8n AI Agent 教學。

不想自己顧主機的話

排程設好之後,真正讓人頭痛的通常是主機那一端:半夜重開、容器更新、磁碟滿了,排程默默停了好幾天才被發現。自己架就得自己顧時區、版本更新、備份和執行紀錄清理。如果你只想專心做流程,RoamerHost 的 n8n 全託管是獨立容器,已預設台灣時區,附專屬 HTTPS 子網域與 Webhook 網址,執行次數與流程數不設上限,自動更新、自動備份,有問題可以直接用中文詢問,年繳 NT$5,988(平均每月 NT$499)。想先算算自己架實際要花多少,可以看自架 n8n 的成本拆解。

常見問題

Q:Schedule Trigger 可以設到每幾秒跑一次嗎?

可以。Trigger Interval 選 Seconds,可以設每 1 到 59 秒跑一次;Cron 也可以寫成六欄,最前面那欄就是秒,例如 */10 * * * * * 是每 10 秒。不過秒級排程會讓執行紀錄長得非常快,多數情況改用 Webhook,或把間隔拉長到分鐘級會比較合適。

Q:同一個流程可以設好幾個不同的時間嗎?

可以。在 Schedule Trigger 裡按 Add Rule,加第二條、第三條 Trigger Rules,例如平日早上 9 點一條、週六中午 12 點一條,任何一條時間到了都會觸發。要注意兩條規則的時間不要重疊,否則同一個時間點會跑兩次。

Q:按 Execute workflow 有跑,為什麼隔天沒有自動跑?

Execute workflow 是手動測試,跟排程無關。排程要在流程發佈之後才會開始,2.x 請按畫布上方的 Publish,看到 Published 才算上線;1.x 則是打開右上角的 Active 開關。發佈後又改過設定的話,也要再發佈一次,新的設定才會生效。

Q:已經設了 GENERIC_TIMEZONE,排程時間還是不對?

先看那個工作流程的設定裡,Timezone 有沒有被單獨指定成別的時區,工作流程的設定會優先於整台 n8n。再確認改完環境變數之後有重建容器,而不只是重新整理頁面。如果是 Code 節點算出來的時間不對,多半是用了 new Date(),改用 $now 就會照 n8n 的時區走。

資料來源

準備好開始使用 n8n 了嗎

完成訂閱後 60 秒,系統自動幫你裝好 n8n——獨立容器、資源硬性上限不與他人共用、HTTPS 開箱即用。

年繳・無違約金・隨時可取消續約

嗨,我是小浪!有任何問題都歡迎點我詢問,我來幫你解答。

小浪

小浪 - AI小助手

在線中
小浪

有任何問題都歡迎隨時詢問我,我會盡力為你解答!

Powered by RoamerHost AI