
為什麼需要 Loop 節點?
在 n8n 裡,每一個節點預設是「一次處理整包資料」,
但有些場景,我們就是需要「逐筆」處理,甚至中間加邏輯、加條件,做出一種「流程在每筆資料上跑一遍」的效果。
這就是 Loop(迴圈)的用武之地
- 不用寫 for 迴圈
- 可以重複跑你設計好的節點邏輯
- 讓流程可視化,debug 超方便
Loop 節點怎麼運作?
Loop 節點本質上就是:
- 接收一組資料(陣列)
- 逐筆把資料送進「Loop 分支」
- 全部跑完後再把結果合回主流程
你可以想像成一台自動化的「資料迴圈工廠」:
每筆資料都會被放上生產線 → 經過一樣的處理 → 再合併出廠。
一個超實用的例子
我自己最常用這種「批次處理 + 單筆循環」的工作流,像是寄送會員通知信、報表整理,或自動寄送確認信這類任務。
以這個範例來說,流程長這樣:

- 先用 Code 節點(Generate People Data)產生一批使用者資料
- 透過 Split In Batches 節點(Loop Over People)讓 n8n 一次處理一筆
- 在每一輪的迴圈裡:
- 用 Function 節點(Format Person Details)挑出要寄信的 email
- 接著可以再接上 Email 節點或 HTTP Request 打到外部發信 API
- 當所有人都跑完後,n8n 自動結束整個流程
這樣設計的好處是:
- 不需要手動寫 for 迴圈,邏輯清晰又直覺
- 每筆資料都能獨立處理與除錯,出錯不會卡住整批流程
- 流程可重複使用,不論是寄信、通知或資料處理都能直接套用
Loop 的幾個常見設定方式
1. 使用前一個節點的資料
最基本的用法:直接把前一個節點的輸出拿來迭代。
例如從 Notion 抓回來 20 筆資料 → Loop 一筆一筆跑。
2. 自訂開始與結束條件
如果你不想 loop 完整的資料集,也可以:
- 只跑前幾筆
- 或設條件(例如金額大於 1000 才進迴圈)
3. 搭配 IF / Wait
Loop 不一定要單打獨鬥,你可以在迴圈裡放:
- IF → 過濾出需要的資料
- Wait → 控制發送頻率,可以等待幾秒再繼續下一步(避免 API 壞掉)
Loop vs Function:這裡差很多!
很多人會問我:「Loop 這不就跟 Function 寫 for loop 一樣嗎?」
技術上是,但實務上其實差很多
| 比較項目 | Loop 節點 | Function 寫 for 迴圈 |
|---|---|---|
| 可讀性 | 高,流程圖一目了然 | 藏在程式碼裡,不容易維護 |
| Debug | 可以逐筆追蹤 | 要 console.log 才看得到 |
| 控制流程 | 可視化 + IF / Wait / Merge 組合彈性高 | 只能寫邏輯 |
| 錯誤處理 | 單筆出錯不影響其他 | 容易整包壞掉 |
所以我的習慣是:只要能用 Loop 解決,就不自己寫 for 迴圈。
實戰小技巧
這裡分享幾個我常用的小撇步
- 記得開啟「Loop Results」:你可以選擇要不要合併每次的輸出,這對後續處理超關鍵。
- Loop 裡的節點越乾淨越好:只放該筆資料需要處理的邏輯,別在裡面塞太多流程。
- 搭配 Wait 節點防止 API 速率爆掉:特別是發信、打 API 的場景。
- 用 IF 搭條件,提前把不需要跑的資料擋掉:能省掉很多運算資源。
Loop + IF + Merge:打造自動化的「處理引擎」
最有趣的地方在 Loop 其實不只是單純「一筆一筆跑」,
當你把它搭配 IF(判斷邏輯)和 Merge(結果合併),
你就能打造一條「會思考」的資料處理引擎。
例如:
- Loop 一筆筆訂單
- IF 判斷付款狀態
- 已付款 → 寄信
- 未付款 → 加入提醒名單
- Merge 把兩條結果合併 → 一次產出報表
這時候,你的 n8n 流程不再只是「自動執行」,而是在「自動判斷」。
結語
如果說 IF 節點給了我們邏輯的分支能力,
那 Loop 節點,就是讓我們能「處理大量資料」的秘密武器。
剛開始用 n8n 的時候,你可能覺得 Loop 有點難懂,
但一旦搞懂它的資料進出方式,你會發現很多本來要寫程式的東西,其實一顆節點就能搞定。
這也是不寫程式的人會越來越愛用 n8n 的原因之一。
延伸閱讀(我的 n8n 系列文章)
