
在你的 n8n 自動化旅程中,你一定會遇到需要整合「不同來源」資料的情境。想像一下:你想發送一封個人化的客戶歡迎信,客戶的基本資料(姓名、Email)在你的 CRM 系統裡,而他們的最新訂單資訊(產品名稱、金額)則在另一個電商平台的資料庫中。
過去,你可能需要手動從 CRM 匯出資料,再從電商平台匯出訂單,然後在 Excel 裡用 VLOOKUP 辛苦地將兩份表格比對、合併,最後才能開始寄信。這個過程不僅耗時、繁瑣,而且極容易出錯。
現在,有了 n8n 的 Merge 節點,你可以徹底告別這種手動複製貼上的地獄!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
和訂單金額
)。你想把這兩份資料合併,讓每一筆客戶資料後面都附上他自己的訂單金額。 - 運作方式:
- 設定 Key for Input 1: 你告訴 Merge 節點,Input 1 要用
客戶ID
這個欄位來當作比對的鑰匙。 - 設定 Key for Input 2: 同樣地,Input 2 也要用
客戶ID
這個欄位來比對。 - Merge 節點會開始逐一比對,當它在 Input 1 和 Input 2 找到
客戶ID
相同的資料時,就會把這兩筆資料的欄位合併成一個新的 Item。
- 設定 Key for Input 1: 你告訴 Merge 節點,Input 1 要用
- 輸出結果:
{ "客戶ID": "A01", "姓名": "王小明", "訂單金額": 5000 }
- 重要選項 (Options):
- Join: 你可以選擇
Inner Join
(只保留兩邊都成功配對的資料) 或是Full Outer Join
(保留所有資料,即使某邊沒有配對成功)。 - Fallback Method: 當兩邊的資料欄位名稱重複時,你可以決定要保留哪一邊的資料。
- Join: 你可以選擇
模式三: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" }
- Input 1 的第一筆資料
- 風險: 風險極高!只要其中一份資料的順序稍微變動,或是有增減,合併出來的結果就會是災難性的張冠李戴。除非你完全確定資料順序的絕對可靠性,否則強烈建議使用
Merge by Key
。

實戰案例:建立一個自動化客戶訂單通知流程
紙上談兵結束,讓我們來實際打造一個工作流,來解決文章開頭提到的「整合 CRM 客戶資料與 Google Sheets 訂單資料」的問題。
目標: 當 Google Sheets 有新訂單時,自動抓取該客戶在 HubSpot (一個 CRM 系統) 的 Email,然後發送一封包含訂單產品名稱的通知信。
流程概覽: 這個流程會有兩個主要分支:
- 訂單分支:
Google Sheets Trigger
->Set (準備Key)
- 客戶分支:
HubSpot Node (Search)
最後這兩個分支會匯入Merge Node
進行合併,再由Send Email Node
發送郵件。
詳細步驟:
- Google Sheets Trigger (訂單分支):
- 設定觸發器,當指定的試算表有新的一列時啟動流程。
- 假設輸出的資料包含
CustomerID
和ProductName
。
- HubSpot Node (客戶分支):
- 使用
Search
操作,搜尋Contact
(聯絡人)。 - 在
Filters
中,我們要根據訂單資料中的CustomerID
來搜尋客戶。所以我們要用 Expression 來引用觸發器節點的資料。 - 設定
Property Name
為customer_id
(你在 HubSpot 中儲存客戶 ID 的欄位)。 - 設定
Value
為{{ $node["Google Sheets Trigger"].json.CustomerID }}
。 - 這樣 HubSpot 節點就會根據新訂單的客戶 ID,去 CRM 裡找出對應的客戶資料,輸出包含
email
的 Item。
- 使用
- 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
,確保只有成功找到客戶資料的訂單才會繼續往下。
- 將
- 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 節點的時機
- 標準化合併: 當你的需求是標準的
Append
或Merge by Key
時,Merge 節點的圖形化介面最快、最直觀。 - 無程式碼/低程式碼: 團隊成員不一定都懂程式,使用 Merge 節點能讓所有人都能看懂並維護這個合併邏輯。
- 效能考量: n8n 原生的 Merge 節點通常經過優化,對於大量資料的處理效能可能會比自己寫的 JavaScript 迴圈更好。
選擇 Code 節點的時機
- 極度複雜的合併邏輯: 當你的合併規則非常客製化,例如需要多重條件判斷、動態計算 Key、或是在合併過程中進行複雜的資料轉換時,Code 節點能提供最大的靈活性。
- 資料結構重塑: 如果合併後的資料需要被重組成一個全新的、完全不同的 JSON 結構,用 Code 節點直接生成目標格式會比用多個
Set
節點來得更有效率。
總結來說,90% 的場景下,Merge 節點都是你的最佳選擇。 只有在遇到 Merge 節點無法滿足的非標準化、極度複雜的邏輯時,才需要考慮動用 Code 節點這把「牛刀」。

結語
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 節點教學:一個「什麼都不做」的節點,為何是整理工作流的神器?