
當你在 n8n 中串接各種 API、Webhook 或讀取 Google Sheets 時,你一定很快就會發現一個殘酷的事實:得到的原始資料,永遠不會是你想要的完美模樣。
可能的情況有:資料中缺少一個「狀態」欄位來追蹤進度;金額和數量需要相乘才能得到總價;API 一次回傳了 50 個你根本用不到的欄位,把你的資料搞得亂七八糟;又或者,價格欄位竟然是「文字」格式,導致後續的計算全部出錯。
面對這些混亂的數據,你該如何整理和加工?答案就是 n8n 中最基本、最常用,也最強大的工具之一:Set 節點。
Set 節點就像是你在 n8n 工作流中的一把資料瑞士刀,它專門用來對流經它的每一筆資料 (Item) 進行加工處理。無論是新增、修改、還是篩選欄位,它都能輕鬆搞定。這篇文章將帶你徹底解析 Set 節點的核心功能與實戰技巧,讓你學會如何優雅地整理你的數據,為後續的自動化步驟鋪平道路。
什麼是 n8n Set 節點?工作流中的數據魔術師
在 n8n 的世界裡,如果說 HTTP Request
節點是負責「獲取」資料的工人,那麼 Set
節點就是負責「加工」資料的魔術師。
它的核心原則非常簡單:Set 節點會接收從上游傳來的所有資料 (Items),然後根據你的設定,對「每一筆」資料的內部欄位進行操作,最後再將同樣數量的、但內容已被修改的資料傳遞給下游。
你可以把它想像成一條產品加工生產線:
- 原料進站 (Input): 100 個半成品(Items)進入 Set 節點這個加工站。
- 加工處理 (Settings): 你下達指令,例如「幫每個產品都貼上一個『待檢驗』的標籤」或「把每個產品的長度都增加 5 公分」。
- 成品出站 (Output): 100 個被加工過的成品(修改後的 Items)離開加工站,前往下一個流程。
關鍵在於,Set 節點只會改變 Item 內部的資料,並不會改變 Item 的數量。進來 100 筆,出去就是 100 筆,只是每筆資料的內容可能已經煥然一新。
基礎功能一:新增一個全新的資料欄位 (Add Field)
這是 Set 節點最基本、最直觀的用途:為流經的資料增加新的欄位。
設定方式
Set 節點的介面非常簡單,主要就是一排排的「Name」和「Value」:
- Name: 你想要新增的欄位名稱(Key)。
- Value: 你想給這個新欄位的值(Value)。
實戰範例:為客戶資料加上「處理狀態」標籤
情境: 當你的網站有新用戶註冊時,Webhook 會觸發 n8n 流程。你想為這筆新用戶資料加上一個 status
欄位,並將其初始值設定為 pending
,方便後續追蹤。
設定步驟:
- 在 Webhook 節點後方,連接一個 Set 節點。
- 在 Set 節點的設定中:
- Name 欄位:輸入
status
。 - Value 欄位:直接輸入文字
pending
。 Data Type
應為String
(文字)。
- Name 欄位:輸入
執行後,你會在 Output 中看到,原本的用戶資料多出了一個 "status": "pending"
的欄位,成功為資料進行了「賦值」。

基礎功能二:修改已存在的欄位值 (Modify Field)
如果你的目標不是新增,而是修改一個已經存在的欄位,操作方式完全一樣。Set 節點會自動判斷:如果你在 Name 欄位輸入的名稱,與傳入的資料中某個欄位名稱相同,它就會用新的 Value 覆蓋掉舊的 Value。
設定方式
與新增欄位相同,只要確保你的 Name
和要修改的目標欄位名稱完全一致即可。
實戰範例:利用 Expression 動態計算訂單總價
情境: 你的訂單資料包含 price
(單價) 和 quantity
(數量) 兩個欄位。你需要計算出總金額,並存入一個名為 total_amount
的新欄位中。
設定步驟:
- 在 Set 節點中,點擊「Add Value」。
- Name 欄位:輸入
total_amount
。 - Value 欄位:這裡我們不能寫死一個數字,而是要動態計算。點擊
f(x)
圖示,切換到 Expression 模式,輸入以下語法:{{ $json.price * $json.quantity }}
這串程式碼的意思是:「抓取當前這筆資料的price
欄位值,和quantity
欄位值,然後將它們相乘。」 Data Type
選擇Number
(數字)。
執行後,Set 節點就會為每一筆訂單資料,動態計算出總價並附加到資料上。
必學功能三:篩選欄位,讓資料流更乾淨 (Filter Fields)
這是 Set 節點一個非常強大卻常被新手忽略的功能。當 API 或資料庫回傳給你一大包混亂的資料,而你其實只需要其中幾個關鍵欄位時,這個功能就是你的救星。
認識「Keep Only Set」選項
在 Set 節點設定面板的右上角,找到「Options」,裡面有一個叫做「Keep Only Set」的開關。
- 預設 (關閉): Set 節點會保留所有傳入的原始欄位,然後再「附加或覆蓋」你在下方設定的欄位。
- 啟用 (開啟): Set 節點會丟棄所有傳入的原始欄位,只保留你在這個節點中有明確設定的那些欄位。
實戰範例:從複雜 API 回應中只保留必要資訊
情境: 你串接了一個天氣 API,它回傳了包含氣壓、風速、濕度、日出日落時間等 30 個欄位的詳細資料。但你的下游流程其實只需要 city_name
(城市名)、temperature
(溫度) 和 weather_condition
(天氣狀況) 這三個欄位。
設定步驟:
- 在 HTTP Request 節點後方,連接一個 Set 節點。
- 在 Set 節點的「Options」中,將 Keep Only Set 開關打開。
- 點擊「Add Value」新增三排設定:
- 第 1 排:
Name
:city_name
Value
:{{ $json.name }}
(假設原始城市名欄位是 name)
- 第 2 排:
Name
:temperature
Value
:{{ $json.main.temp }}
(假設原始溫度資料在巢狀結構裡)
- 第 3 排:
Name
:weather_condition
Value
:{{ $json.weather[0].description }}
- 第 1 排:
- 執行後,你會發現 Set 節點的輸出變得極度乾淨,只剩下你需要的這三個欄位。這能讓你在後續節點設定 Expression 時,更加輕鬆寫意,不再被無關的欄位干擾。
進階應用:資料格式轉換與預設值設定
掌握了增、改、篩三大核心功能後,讓我們來看兩個能讓你資料處理能力大幅提升的進階技巧。
技巧一:轉換資料類型 (String to Number)
情境: 外部系統傳來的 price
欄位值是帶有千分位符號的文字,例如 "1,999"
。這會導致你無法直接用它來進行數學運算。
解法: 在 Set 節點中,結合 Expression 與 JavaScript 的內建函式來進行轉換。
- Name:
price_number
(建立一個新欄位存放數字格式的價格) - Value:
{{ parseFloat($json.price.replace(',', '')) }}
- 語法解析:
$json.price.replace(',', '')
:先把文字中的逗號,
移除,變成"1999"
。parseFloat(...)
:再把處理過的文字"1999"
轉換成真正的數字1999
。
技巧二:設定欄位預設值 (Handling Missing Data)
情境: 你的表單中有一個非必填的「備註」(notes
) 欄位。當用戶沒有填寫時,這個欄位就不會出現在傳入的資料中,這可能導致後續流程在引用 notes
欄位時出錯。
解法: 使用 ||
(OR) 運算子來提供一個預設值。
- Name:
notes
- Value:
{{ $json.notes || "無" }}
- 語法解析:
||
的意思是「或者」。整句話的意思是:「嘗試抓取$json.notes
的值,如果這個值存在(不是空的、null 或 undefined),就用它;如果它不存在,那就改用後面的預設值"無"
。」
這個技巧能大幅增加你工作流的穩定性,避免因缺少可選欄位而導致流程中斷。

結語
n8n 的 Set 節點,是你踏入資料處理世界的第一步,也是最重要的一步。它雖然不像 Code 節點那樣能執行任意複雜的程式,但它提供的圖形化介面,已經足以讓你用極高的效率,完成 90% 以上的日常資料加工任務。
讓我們再次回顧 Set 節點這把強大瑞士刀的四大核心功能:
- 新增 (Add): 為資料流加上新的標籤與屬性。
- 修改 (Modify): 覆蓋舊有資料,或透過 Expression 動態計算新值。
- 篩選 (Filter): 利用「Keep Only Set」大刀闊斧地清理數據,只保留精華。
- 轉換 (Transform): 結合 Expression 與函式,修正資料類型與處理空值。
養成一個好習慣:在每一個負責「獲取資料」的節點(如 HTTP Request, Webhook, Google Sheets)之後,都接上一個 Set 節點。在這個 Set 節點中,有意識地去「整理」你的資料——重新命名欄位、篩選掉雜訊、確保格式正確。這個小小的動作,將會讓你後續的自動化流程開發變得無比順暢。
延伸閱讀
n8n IF 節點教學:掌握 True/False 條件判斷,打造更智慧的自動化工作流
n8n Switch 節點教學:告別複雜 IF 巢狀結構,優雅實現多重條件判斷
n8n Merge 節點教學:合併多個資料來源,告別手動複製貼上
n8n Code 節點終極教學:釋放 JavaScript 的力量,打造無極限自動化
n8n Code 節點 Python 教學:啟用並執行 Python 程式碼,釋放數據處理超能力
n8n Wait 節點教學:讓工作流學會「等待」,完美解決 API 限制與定時任務
n8n Set 節點教學:你的資料瑞士刀,新增、修改、篩選欄位一次搞定
n8n NoOp 節點教學:一個「什麼都不做」的節點,為何是整理工作流的神器?