n8n Switch 節點教學:告別複雜 IF 巢狀結構,優雅實現多重條件判斷

n8n switch節點教學

當你的 n8n 自動化流程越來越複雜,需要處理三、四種,甚至十幾種不同的情況時,你是不是開始瘋狂地串接 IF 節點,搞得整個畫布(Canvas)像一盤義大利麵,錯綜複雜、難以維護?一下 true、一下 false,再往下又一個 truefalse,光是看懂流程走向就讓你頭昏眼花。

如果你有這個痛點,恭喜你,你正在經歷每個 n8n 使用者從新手邁向進階的必經之路。而今天要介紹的 Switch 節點,就是解決這個「IF 巢狀地獄」的最佳解方。

Switch 節點可以說是 IF 節點的超級進化版。它專為「多路徑分流」而生,能讓你的工作流在視覺上保持乾淨、邏輯上更加清晰。這篇文章將帶你徹底解析 Switch 節點的強大之處,從它與 IF 節點的根本差異,到手把手的設定教學與實戰應用,讓你學會如何用更優雅、更高效的方式,打造出能應對多重條件的智慧工作流。

告別義大利麵式流程:為什麼你需要 Switch 節點?

在學習如何使用 Switch 節點之前,我們必須先理解它解決了什麼問題。這一切都要從 IF 節點的極限說起。

IF 節點的極限:當 True/False 不夠用時

IF 節點非常適合處理「二元判斷」,也就是非黑即白、只有兩種結果的情況。例如:「客戶是否為 VIP?」、「訂單金額是否達標?」。這種情況下,一個 IF 節點就能完美分流出 truefalse 兩條路徑。

但如果情況變成:「根據客戶的國家,執行不同動作」呢?假設你有台灣、日本、美國三個市場,用 IF 節點來做,流程就會變成這樣:

  1. 第一個 IF 節點: 判斷「國家是否為台灣?」
    • true:執行台灣的流程。
    • false:進入下一個判斷。
  2. 第二個 IF 節點: 判斷「國家是否為日本?」
    • true:執行日本的流程。
    • false:執行美國的流程(剩下的選項)。

當你需要判斷的國家增加到十個時,你就得串接九個 IF 節點!這種「巢狀 IF 結構」不僅讓工作流變得極度臃腫,未來要新增或修改一個國家的邏輯時,你還得在一團亂麻中找到對應的節點,非常痛苦。

Switch 節點登場:自動化的多向分岔路口

Switch 節點正是為了解決這個問題而設計的。你可以把它想像成一個火車站的「轉轍器」:

  • 輸入 (Input): 只有一個入口,所有火車(資料 Items)都從這裡進站。
  • 判斷依據 (Value to Route on): 轉轍器會檢查每輛火車的目的地車票(你指定的某個欄位值,例如「國家」)。
  • 多個輸出 (Multiple Outputs): 根據車票上的目的地,將火車分別導向第 0 月台(台灣)、第 1 月台(日本)、第 2 月台(美國)…等等。

它將原本複雜的巢狀邏輯,簡化成一個「一進多出」的清晰結構。所有判斷規則都集中在一個節點內設定,一目了然,極易維護。

Switch 節點核心設定:手把手教你建立多路徑分流

理論聽起來很棒,實際操作更是簡單。讓我們用一個常見情境來演練:根據 Trello 卡片的標籤 (Label) 顏色,將任務分派到不同的 Slack 頻道。

假設 Trello 卡片的資料傳入時,包含一個 label_color 欄位,其值可能是 redbluegreen

介面導覽:認識「Routing」規則

打開 Switch 節點,你會看到它的核心設定區塊「Routing」,主要包含兩個部分:

  • Value to Route on: 用來決定分流依據的「關鍵值」。
  • Routing Rules: 根據這個關鍵值,設定多條分流規則。

基礎設定:根據「單一值」進行分流

Step 1: 設定 Value to Route on (你要檢查哪個欄位?)

我們要根據「標籤顏色」來分流,所以點擊 f(x) 圖示,用 Expression 填入 {{ $json.label_color }}。這就等於告訴 Switch 節點:「等一下請幫我檢查每一筆資料的 label_color 欄位。」

Step 2: 建立 Routing Rules (設定分流規則)

接下來,我們點擊「Add Rule」來新增規則:

  • 第一條規則:
    • Operation: 選擇 String -> Equal
    • Value: 輸入 red
    • n8n 會自動將這條規則對應到 Output Index 0。這表示,如果 label_color 的值等於 red,資料就會從第 0 個出口送出。
  • 第二條規則:
    • 點擊「Add Rule」再次新增。
    • Operation: String -> Equal
    • Value: 輸入 blue
    • 這條規則會自動對應到 Output Index 1
  • 第三條規則:
    • 再次「Add Rule」。
    • Operation: String -> Equal
    • Value: 輸入 green
    • 這條規則會對應到 Output Index 2

Fallback Output (預設路徑): 在所有規則的下方,你會看到最後一個輸出點,它沒有對應任何規則。這個就是「預設路徑」。如果傳入的資料 label_color 既不是 redblue 也不是 green(例如是 yellow),那麼它就會被送到這個預設的出口。

完成設定後,你的 Switch 節點就會出現 4 個輸出點(0, 1, 2, Fallback),你可以將它們分別連接到不同的 Slack 頻道,輕鬆完成任務分派!

n8n switch節點教學

活用 Routing 規則:Switch 節點的條件判斷大全

Switch 節點的 Operation 選項和 IF 節點一樣豐富,讓你不只可以比對固定文字,還能做更複雜的判斷。

  • 文字 (String) 路由: 除了 Equal,你還可以用 Contains (包含)、Starts With (開頭是)、Regex (正規表示式) 等,非常適合用來處理分類標籤、訊息關鍵字等。
  • 數字 (Number) 路由: 你可以用 Greater Than (大於)、Less Than (小於) 等來處理數值。一個關鍵技巧是:當你要判斷一個「範圍」(例如 金額 > 1000)時,在 Routing Rules 中,資料類型要選擇 Rule 而不是預設的 Fixed,這樣才能設定數字大小的比較。
  • 資料類型 (Data Type) 路由: 你可以使用 Is Empty (是空的) 或 Is Not Empty (不是空的) 來做為路由規則。這在做資料預處理時非常有用,例如檢查重要欄位是否有遺漏,如果有遺漏就先送去錯誤處理路徑。

Switch vs. IF 節點:我該選用哪個?

既然 Switch 這麼好用,是不是所有地方都用 Switch 就好了?其實不然,IF 和 Switch 各有最適合的應用場景。

使用 IF 節點的時機:二元判斷的最佳選擇

當你的邏輯只有兩種結果,是一個簡單的「Yes/No」或「True/False」問題時,用 IF 節點最為直觀且清晰。

  • 範例:
    • 判斷「用戶是否已勾選同意條款?」
    • 判斷「API 回傳的狀態碼是否為 200?」

使用 Switch 節點的時機:處理多種固定狀態

當你需要根據「單一欄位」的「多種不同值」來執行不同路徑時,Switch 節點就是不二之選。

  • 範例:
    • 根據訂單狀態 (pending, shipped, delivered, cancelled) 分流。
    • 根據客服問題分類 (帳務問題, 技術支援, 產品諮詢) 分派給不同部門。

組合技:如何搭配使用 IF 和 Switch?

在更複雜的流程中,你可以將兩者結合,發揮各自的優勢。

  • 範例: 一個處理新訂單的流程。
    1. 先用一個 IF 節點 判斷 order_amount > 5000
    2. true 的路徑上(高價值訂單),再接一個 Switch 節點,根據 product_category(產品類別)將訂單分派給專門的業務團隊。
    3. false 的路徑上(一般訂單),則直接進入標準的自動化出貨流程。

實戰案例分享:Switch 節點的 3 個典型應用

讓我們看看 Switch 節點在真實世界的應用,你會更了解它的威力。

情境一:根據 Trello 卡片標籤,自動指派任務

  • 目標: Trello 看板有「行銷活動」、「技術 Bug」、「內容撰寫」三種標籤。當新卡片被加上標籤時,自動通知對應的 Slack 頻道。
  • 流程: Trello Trigger (Card updated) -> Switch Node -> 分別連接到 #marketing#dev-bugs#content 三個 Slack Node
  • Switch 設定:
    • Value to Route on: {{ $json.label.name }}
    • Rule 1: Equal “行銷活動” -> Output 0
    • Rule 2: Equal “技術 Bug” -> Output 1
    • Rule 3: Equal “內容撰寫” -> Output 2

情境二:處理 Webhook,根據事件類型觸發不同流程

  • 目標: 你的電商平台 (如 Stripe) 會發送不同事件的 Webhook 到同一個 n8n 端點。你需要根據事件類型來處理。
  • 流程: Webhook -> Switch Node -> (路徑0) 處理付款成功 / (路徑1) 處理退款 / (路徑2) 處理訂閱取消。
  • Switch 設定:
    • Value to Route on: {{ $json.body.type }} (假設事件類型存在這裡)
    • Rule 1: Equal “charge.succeeded” -> Output 0
    • Rule 2: Equal “charge.refunded” -> Output 1
    • Rule 3: Equal “customer.subscription.deleted” -> Output 2

情境三:打造一個簡單的 LINE 聊天機器人指令分流器

  • 目標: 用戶在 LINE 官方帳號輸入不同指令,機器人回覆不同內容。
  • 流程: LINE Trigger -> Switch Node -> (路徑0) 查詢天氣 / (路徑1) 查詢最新活動 / (路徑2) 回覆預設訊息。
  • Switch 設定:
    • Value to Route on: {{ $json.events[0].message.text }}
    • Rule 1: Contains “天氣” -> Output 0
    • Rule 2: Contains “活動” -> Output 1
    • 剩下的走 Fallback Output,連接到一個回覆「無法辨識指令」的節點。
n8n switch節點教學

結語

告別雜亂無章的 IF 節點串,擁抱清晰明瞭的 Switch 節點吧!它不僅是 n8n 中一個強大的工具,更是優化工作流結構、提升可讀性與可維護性的核心觀念。

記住這兩個節點的最佳使用時機:

  • IF 節點: 處理簡單的「二選一」決策。
  • Switch 節點: 優雅地處理基於單一值的「多選一」分流。

下次當你發現自己又準備拉出第三個 IF 節點時,請停下來,試著用 Switch 節點來重構你的流程。你會發現,整個世界都變得清爽了!

延伸閱讀
n8n IF 節點教學:掌握 True/False 條件判斷,打造更智慧的自動化工作流
n8n Switch 節點教學:告別複雜 IF 巢狀結構,優雅實現多重條件判斷
n8n Merge 節點教學:合併多個資料來源,告別手動複製貼上
n8n Code 節點終極教學:釋放 JavaScript 的力量,打造無極限自動化
n8n Code 節點 Python 教學:啟用並執行 Python 程式碼,釋放數據處理超能力
n8n Wait 節點教學:讓工作流學會「等待」,完美解決 API 限制與定時任務
n8n Set 節點教學:你的資料瑞士刀,新增、修改、篩選欄位一次搞定
n8n NoOp 節點教學:一個「什麼都不做」的節點,為何是整理工作流的神器?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端