n8n Merge 節點教學:合併多個資料來源,告別手動複製貼上

n8n Merge 節點教學

在你的 n8n 自動化旅程中,你一定會遇到需要整合「不同來源」資料的情境。想像一下:你想發送一封個人化的客戶歡迎信,客戶的基本資料(姓名、Email)在你的 CRM 系統裡,而他們的最新訂單資訊(產品名稱、金額)則在另一個電商平台的資料庫中。

過去,你可能需要手動從 CRM 匯出資料,再從電商平台匯出訂單,然後在 Excel 裡用 VLOOKUP 辛苦地將兩份表格比對、合併,最後才能開始寄信。這個過程不僅耗時、繁瑣,而且極容易出錯。

現在,有了 n8nMerge 節點,你可以徹底告別這種手動複製貼上的地獄!Merge 節點是 n8n 中負責「資料整合」的核心工具,它就像一個智慧的資料處理中心,能讓你根據指定的規則,自動將來自不同節點、不同來源的資料流(Data Flows)精準地合併在一起。

這篇文章將會是你的 n8n Merge 節點終極指南。我們將從 Merge 節點的核心功能講起,詳細拆解它最重要的三種合併模式,並透過實際案例,手把手教你如何設定,讓你輕鬆掌握跨系統資料整合的強大能力。

什麼是 n8n Merge 節點?自動化流程的資料匯流站

在 n8n 的工作流中,當你的流程出現分支,並且在分支的末端需要將這些分開處理的資料重新匯集在一起時,Merge 節點就派上用場了。

你可以把它想像成一個高速公路的「匯流道」:

  • 多個入口 (Multiple Inputs): 它不像其他節點只有一個輸入點,Merge 節點天生就有兩個(或更多)輸入點,分別接收來自不同分支的車流(資料流)。例如,Input 1 接收來自 CRM 系統的客戶資料,Input 2 接收來自 Google Sheets 的訂單資料。
  • 合併規則 (Merge Mode): 交通指揮中心(也就是你)會設定一套規則,告訴 Merge 節點要如何讓這兩股車流「合併」。是要一台接一台地排隊(Append),還是要根據車牌號碼配對(Merge by Key)?
  • 單一出口 (Single Output): 無論進來的車流有多複雜,經過 Merge 節點處理後,都會變成一股整合好的、有秩序的新車流(合併後的資料流),往下一個目的地前進。

簡單來說,Merge 節點的核心任務,就是將兩個或多個獨立的資料輸入流,根據你指定的模式,整合成一個單一的資料輸出流。

Merge 節點三大核心模式 (Mode) 完全解析

Merge 節點的精髓就在於它的三種合併模式。理解這三種模式的差異與應用場景,是掌握這個節點的關鍵。

模式一:Append (附加模式) – 把資料接龍起來

Append 模式是最單純的合併方式。它會做的事情非常簡單:將 Input 2 的所有資料 (Items),原封不動地接到 Input 1 的所有資料後面。

  • 情境: 你有兩個 Google Sheets,一個是「台北客戶名單」,另一個是「高雄客戶名單」。你想將這兩份名單合併成一份完整的「全台客戶總名單」。
  • 運作方式:
    • Input 1 收到 10 筆台北客戶資料 (10 個 Items)。
    • Input 2 收到 8 筆高雄客戶資料 (8 個 Items)。
    • Merge 節點的 Output 就會是 10 + 8 = 18 筆客戶資料 (18 個 Items)。
  • 優點: 操作簡單直觀,適合用來合併結構相同、但來源不同的多份清單。

模式二:Merge by Key (按鍵值合併) – 智慧配對資料

Merge by Key 是 Merge 節點中最強大、也最常用的模式。它的運作方式類似 Excel 的 VLOOKUP 或資料庫的 JOIN 操作。它會根據你在兩個輸入流中指定的「共同欄位 (Key)」,來進行一對一的資料配對與合併。

  • 情境: 就像我們開頭提到的,Input 1 有客戶資料(包含 客戶ID姓名),Input 2 有訂單資料(包含 客戶ID訂單金額)。你想把這兩份資料合併,讓每一筆客戶資料後面都附上他自己的訂單金額。
  • 運作方式:
    1. 設定 Key for Input 1: 你告訴 Merge 節點,Input 1 要用 客戶ID 這個欄位來當作比對的鑰匙。
    2. 設定 Key for Input 2: 同樣地,Input 2 也要用 客戶ID 這個欄位來比對。
    3. Merge 節點會開始逐一比對,當它在 Input 1 和 Input 2 找到 客戶ID 相同的資料時,就會把這兩筆資料的欄位合併成一個新的 Item。
  • 輸出結果: { "客戶ID": "A01", "姓名": "王小明", "訂單金額": 5000 }
  • 重要選項 (Options):
    • Join: 你可以選擇 Inner Join (只保留兩邊都成功配對的資料) 或是 Full Outer Join (保留所有資料,即使某邊沒有配對成功)。
    • Fallback Method: 當兩邊的資料欄位名稱重複時,你可以決定要保留哪一邊的資料。

模式三:Merge by Index (按順序合併) – 依序組合資料

Merge by Index 是一種比較特殊的模式,它不看欄位內容,只看資料的「順序 (Index)」。它會將 Input 1 的第 0 個 Item 和 Input 2 的第 0 個 Item 合併,第 1 個和第 1 個合併,以此類推。

  • 情境: 這種模式比較少用,通常用在兩個資料來源雖然沒有共同 Key,但你非常確定它們的順序是完全對應的。例如,你有兩份沒有客戶 ID 的名單,一份是姓名,一份是電話,而且你 100% 確定兩份名單的客戶順序一模一樣。
  • 運作方式:
    • Input 1 的第一筆資料 { "姓名": "王小明" }
    • Input 2 的第一筆資料 { "電話": "0912345678" }
    • Merge 節點的輸出就是 { "姓名": "王小明", "電話": "0912345678" }
  • 風險: 風險極高!只要其中一份資料的順序稍微變動,或是有增減,合併出來的結果就會是災難性的張冠李戴。除非你完全確定資料順序的絕對可靠性,否則強烈建議使用 Merge by Key
n8n Merge 節點教學

實戰案例:建立一個自動化客戶訂單通知流程

紙上談兵結束,讓我們來實際打造一個工作流,來解決文章開頭提到的「整合 CRM 客戶資料與 Google Sheets 訂單資料」的問題。

目標: 當 Google Sheets 有新訂單時,自動抓取該客戶在 HubSpot (一個 CRM 系統) 的 Email,然後發送一封包含訂單產品名稱的通知信。

流程概覽: 這個流程會有兩個主要分支:

  1. 訂單分支: Google Sheets Trigger -> Set (準備Key)
  2. 客戶分支: HubSpot Node (Search) 最後這兩個分支會匯入 Merge Node 進行合併,再由 Send Email Node 發送郵件。

詳細步驟:

  1. Google Sheets Trigger (訂單分支):
    • 設定觸發器,當指定的試算表有新的一列時啟動流程。
    • 假設輸出的資料包含 CustomerIDProductName
  2. HubSpot Node (客戶分支):
    • 使用 Search 操作,搜尋 Contact (聯絡人)。
    • Filters 中,我們要根據訂單資料中的 CustomerID 來搜尋客戶。所以我們要用 Expression 來引用觸發器節點的資料。
    • 設定 Property Namecustomer_id (你在 HubSpot 中儲存客戶 ID 的欄位)。
    • 設定 Value{{ $node["Google Sheets Trigger"].json.CustomerID }}
    • 這樣 HubSpot 節點就會根據新訂單的客戶 ID,去 CRM 裡找出對應的客戶資料,輸出包含 email 的 Item。
  3. Merge Node (關鍵的匯流站):
    • Google Sheets Trigger 的輸出連接到 Input 1
    • HubSpot Node 的輸出連接到 Input 2
    • Mode: 選擇 Merge by Key
    • Key for Input 1: 輸入 CustomerID
    • Key for Input 2: 輸入 customer_id (注意,兩邊的欄位名稱可能不同,但代表的意義必須相同)。
    • Join: 選擇 Inner Join,確保只有成功找到客戶資料的訂單才會繼續往下。
  4. Send Email Node:
    • Merge Node 的輸出連接到此節點。
    • 現在,因為資料已經合併,你可以輕鬆地在郵件內容中使用來自兩個不同來源的資料了!
    • To Address: {{ $json.email }} (來自 HubSpot)
    • Subject: 您的訂單 {{ $json.ProductName }} 已確認! (來自 Google Sheets)

就這樣,一個跨系統的自動化資料整合流程就完成了!完全不需要任何手動操作。

Merge 節點進階技巧與注意事項

當你熟悉了基本操作後,掌握以下幾個進階技巧,能讓你的合併流程更穩定、更符合需求。

  • 處理欄位名稱衝突: 如果兩個輸入流有同樣名稱的欄位(例如兩邊都有 update_time),你可以在 Options 中設定 Fallback Method,決定要優先保留 Input 1 的資料,還是 Input 2 的資料。
  • 善用 Join 模式:
    • Inner Join(預設):最常用,只保留兩邊都成功配對的資料,可以有效過濾掉無效訂單(例如 CRM 中查無此客戶的訂單)。
    • Full Outer Join:當你希望無論是否配對成功,都保留所有資料時使用。沒配對到的資料,另一邊的欄位會是空的。
  • 確保 Key 的資料格式一致: Merge by Key 在比對時,對資料格式很敏感。123 (數字) 和 "123" (文字) 是不一樣的!如果發現配對失敗,請先檢查兩邊的 Key 欄位格式是否相同,必要時先用 Set 節點進行轉換。
  • 合併多於兩個來源: 如果你有三個或更多的資料來源需要合併,你可以串接多個 Merge 節點。例如,先將 A 和 B 合併,再將合併後的結果與 C 進行第二次合併。

Merge vs. Code 節點:我該選擇哪一個?

對於熟悉程式碼的使用者來說,可能會想:「我用 Code 節點寫幾行 JavaScript 不是也能合併資料嗎?」這是一個很好的問題。這兩個節點的選擇,取決於你的需求複雜度和團隊協作模式。

選擇 Merge 節點的時機

  • 標準化合併: 當你的需求是標準的 AppendMerge by Key 時,Merge 節點的圖形化介面最快、最直觀。
  • 無程式碼/低程式碼: 團隊成員不一定都懂程式,使用 Merge 節點能讓所有人都能看懂並維護這個合併邏輯。
  • 效能考量: n8n 原生的 Merge 節點通常經過優化,對於大量資料的處理效能可能會比自己寫的 JavaScript 迴圈更好。

選擇 Code 節點的時機

  • 極度複雜的合併邏輯: 當你的合併規則非常客製化,例如需要多重條件判斷、動態計算 Key、或是在合併過程中進行複雜的資料轉換時,Code 節點能提供最大的靈活性。
  • 資料結構重塑: 如果合併後的資料需要被重組成一個全新的、完全不同的 JSON 結構,用 Code 節點直接生成目標格式會比用多個 Set 節點來得更有效率。

總結來說,90% 的場景下,Merge 節點都是你的最佳選擇。 只有在遇到 Merge 節點無法滿足的非標準化、極度複雜的邏輯時,才需要考慮動用 Code 節點這把「牛刀」。

n8n Merge 節點教學

結語

Merge 節點是 n8n 中從單線程思維邁向多線程、平行處理思維的關鍵。它解放了你的資料,讓它們不再受限於單一的來源或路徑。

讓我們再次總結三種模式的精華:

  • Append: 最簡單的「加法」,適合合併同質性的清單。
  • Merge by Key: 最強大、最可靠的「配對」,是跨系統資料整合的首選。
  • Merge by Index: 最具風險的「對號入座」,僅在特殊情況下使用。

當你下次需要整合來自 Webhook、CRM、資料庫、試算表等多個來源的資料時,請務必想起 Merge 節點這個強大的匯流道。學會了它,你就能打造出真正複雜、強大且極具商業價值的自動化工作流,將你的生產力提升到一個全新的境界。

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

發佈留言

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

返回頂端