n8n set 節點n8n mergen8n 資料處理n8n 整合節點n8n 教學

n8n Set 與 Merge 節點:整理與合併資料流的正確方式

n8n 工作流裡資料常常一團亂——欄位名稱對不上、兩條分支接不起來。Set 節點負責整理、重命名、補欄位,Merge 節點負責把多條資料流接成一條。這篇用實際場景講清楚兩者的差別、四種 Merge 模式怎麼選,以及新手最容易踩的雷。

N8NMarket 2026年6月12日

n8n 的 Set 節點用來整理單一資料流的欄位(新增、重命名、刪除、轉型),Merge 節點則用來把兩條以上的資料流合併成一條。前者處理「同一條流裡的欄位長相」,後者處理「不同流之間怎麼接」,分清楚這個界線,八成的資料整理問題都會迎刃而解。

寫 n8n 工作流時,最磨人的往往不是串接 API,而是「資料在節點之間傳來傳去後變得一團亂」——前一個節點吐出的欄位叫 email,下一個服務要的卻是 to_address;或是你從兩個來源各撈了一份資料,想對在一起卻不知道從哪下手。這兩個痛點,正好對應 Set 與 Merge 兩顆節點。

本文是 n8n 入門系列的延伸。如果你還沒建立完整的節點地圖,建議先讀n8n 核心節點完全攻略,再回來深入這兩顆。

Set 節點:把資料整理成下一站要的長相

Set 節點(新版介面叫 Edit Fields)的工作只有一件事:改變單一資料流裡每一筆 item 的欄位。它不會增加或減少 item 的數量,只動「每筆資料長什麼樣」。

常見用途有四種:

  • 重新命名欄位:上游給的是 customer_name,下游 webhook 要的是 name
  • 新增固定欄位:替每筆資料補上 source: "n8n"status: "pending" 這類標記。
  • 挑選需要的欄位:API 回了 30 個欄位,你只要其中 3 個,把雜訊清掉再往下傳。
  • 型別轉換:把字串 "123" 轉成數字、把時間戳轉成日期格式。

兩種模式:Keep Only Set 的開關很關鍵

Set 節點有一個新手常忽略卻很重要的選項——「是否只保留我設定的欄位」(舊版叫 Keep Only Set Fields,新版在 Options 裡的 Include Other Input Fields):

  • 保留全部(預設):你設定的欄位會疊加到原本的資料上,沒設定的欄位原封不動帶過去。
  • 只留設定的:輸出只會有你手動列出的欄位,其餘全部丟掉。

這個開關決定了 Set 是「補充」還是「重建」。想清乾淨欄位、避免把一堆內部欄位傳給外部 API,就切成「只留設定的」;只是想多塞一兩個欄位,就保留全部。

用 Expression 讓 Set 動起來

Set 的欄位值不一定是寫死的字串,可以用 n8n 的 Expression 引用上游資料:

{{ $json.firstName }} {{ $json.lastName }}

上面這行會把 firstNamelastName 合併成一個全名欄位。這也是 Set 最常見的進階用法——重組欄位,而不只是搬運。

Merge 節點:把多條分支接回一條

Merge 節點:把多條分支接回一條

當你的工作流出現「分岔」——例如同時打了兩支 API、或用 IF 節點把資料分成兩路——遲早需要把它們接回來。這就是 Merge 節點的舞台。

Merge 至少有兩個輸入(Input 1、Input 2),它的核心問題只有一個:這兩堆資料要怎麼合? n8n 提供四種模式(不同版本名稱略有差異,這裡用 v3 的講法):

1. Append(接在後面)

最單純:把 Input 2 的所有 item 直接接在 Input 1 後面,像兩個清單疊起來。輸入各 3 筆,輸出就是 6 筆。不做任何配對,純粹合併清單。適合「兩個來源的資料想放在同一份清單裡」。

2. Combine by Matching Fields(依欄位配對合併)

這是最像資料庫 JOIN 的模式。你指定一個配對欄位(例如兩邊都有 email),n8n 會把欄位值相同的 item 對在一起、欄位合併。適合「A 來源有使用者基本資料,B 來源有訂單金額,想用 email 把兩份對起來」。

配對時還能選對不上的 item 怎麼處理(只保留配對成功的 / 保留全部),對應到 SQL 的 inner join 與 outer join 概念。

3. Combine by Position(依位置合併)

不看欄位內容,純粹「第 1 筆配第 1 筆、第 2 筆配第 2 筆」。適合你確定兩邊順序一致、筆數相同的情況,例如同一批資料拆開處理後再拼回去。順序一旦錯位就會配錯,用之前要確認上游沒有重新排序。

4. Combine by All Combinations(交叉組合)

把 Input 1 的每一筆和 Input 2 的每一筆兩兩相乘(笛卡兒積)。Input 1 有 3 筆、Input 2 有 4 筆,輸出 12 筆。用得少,多半出現在「要產生所有排列組合」的特殊場景,平常別誤選——筆數爆炸是新手常見意外。

新手最常踩的三個雷

新手最常踩的三個雷

雷一:Merge 等不到另一條分支。 Merge 節點預設會等兩個輸入都有資料才往下跑。如果某條分支在某些情況下完全沒資料(例如 IF 全部走另一邊),Merge 可能卡住或行為不如預期。設計分岔流程時,要確認兩邊在各種情況下都會有「至少跑到 Merge」的路徑。

雷二:用 Set 卻忘了切 Keep Only。 想把乾淨資料傳給外部 API,結果把一堆 n8n 內部欄位也一起送出去。送資料給第三方前,習慣用「只留設定的」模式收斂欄位。

雷三:拿 Append 當配對用。 Append 不會把同一個人的兩份資料對在一起,它只是把清單疊起來。需要「對在一起」請用 Combine by Matching Fields。這兩個搞混會讓你的資料看起來「有合併但對不齊」。

一個完整的小範例

假設你要做一份「新註冊用戶 + 他們的首筆訂單」報表:

  1. HTTP Request A:撈出今天新註冊的用戶(含 emailname)。
  2. HTTP Request B:撈出今天的訂單(含 emailamount)。
  3. Merge(Combine by Matching Fields,配對欄位 email:把同一個 email 的用戶與訂單對在一起。
  4. Set(Edit Fields):重命名欄位、補上 report_date、只保留 name / email / amount / report_date 四欄。
  5. 往下傳給 Google Sheets 或寄信節點。

這個流程把 Merge(接資料)與 Set(整理資料)的分工展示得很清楚:先合併、再整形,順序對了,後面的節點就乾淨好接。

小結

記住一句話就夠:Set 管「一條流裡的欄位長相」,Merge 管「多條流之間怎麼接」。資料對不齊先想 Merge 模式選對了沒,欄位名稱不對先用 Set 重命名。把這兩顆練熟,n8n 裡九成的資料整理需求都能優雅解決。

接著建議搭配n8n 核心節點完全攻略複習其他基礎積木,或看n8n 資料轉換與 JSON 處理深入更複雜的資料操作。