n8n Edit Fields (Set) 節點是用來新增、修改、刪除工作流數據欄位的核心節點,可以進行數據清洗、格式轉換、動態賦值等操作,是 n8n 自動化工作流中最常用的節點之一。
本文基於 n8n 1.120.4 版本撰寫,所有範例皆經過實測。如有版本差異請參考 n8n 官方文檔。
Set 節點大概是我在 n8n 裡面最常用的節點,幾乎每個工作流都會用到。
它的功能看似簡單,但實際上能做的事情超級多。
n8n Edit Fields (Set) 節點是什麼?
Set 節點在新版 n8n 裡面改名叫 Edit Fields,但功能是一樣的。
它的核心任務就是:新增、修改、刪除數據欄位,就是調整 JSON 裡面的數據欄位。
我自己實測下來,大概 90% 的 workflow 都會用到 Set 節點,特別是在:
- HTTP Request 節點之後,整理 API 回傳的雜亂數據
- 傳送資料給其他服務之前,把格式調整成對方 API 需要的格式
- 在工作流中間,把不同來源的數據整合成統一格式
用個比喻來說:Set 節點就像是今天你取得一塊原木
需要將木頭先做初步的整理,把不需要的部份先去除掉
再把它做後續的加工應用。
技巧一:欄位的整理
這是 Set 節點最常用的功能,幫你整理欄位
組合欄位 - 把分散的數據合併
常見的場景:API 回傳的姓名是分開的 first_name 和 last_name,但你需要完整的 full_name。
設定方式:
- 新增一個欄位,命名為
full_name - 值設定為表達式:
{{ $json.firstname }} {{ $json.lastname }}
Before:
1 | { |
After:
1 | { |
Expression 轉換字串的格式
有時候數據格式不統一會造成後面混亂,Set 節點可以幫你強制轉換:
| 需求 | 表達式 | 範例結果 |
|---|---|---|
| 全部轉大寫 | {{ $json.name.toUpperCase() }} |
DARRELL |
| 全部轉小寫 | {{ $json.email.toLowerCase() }} |
darrell@example.com |
| 去除空白 | {{ $json.input.trim() }} |
移除頭尾空白 |
| 替換字元 | {{ $json.phone.replace(/-/g, '') }} |
0912-345678 → 0912345678 |
技巧二:動態表達式與時間
Set 節點不只能設定靜態值,還能用表達式加入動態的資料欄位,例如當下。
取得當前時間
很多場景需要記錄「這筆資料是什麼時候處理的」,用 {{ $now }} 就能輕鬆搞定:
1 | {{ $now.toISO() }} → 2025-11-24T22:49:12.943+08:00 |
條件判斷
這是我也很常使用的功能!
可以在 Set 節點裡面做簡單的 If/Else 判斷
不用再另外多寫一個 Code 節點來做整理
{{ 條件 ? 如果為真 : 如果為假 }}
範例:根據分數判斷等級
1 | {{ $json.vip_score >= 80 ? 'VIP' : '一般會員' }} |
範例:根據金額判斷是否免運
1 | {{ $json.total >= 1000 ? '免運費' : '運費 60 元' }} |
1 | {{ $json.score >= 90 ? 'A' : $json.score >= 80 ? 'B' : 'C' }} |
引用先前節點的數據
除了用 $json 取得前一個節點的數據,還能跨節點取值(更多內建變數請參考 n8n 內建變數教學):
| 語法 | 說明 |
|---|---|
$json.欄位名 |
取得直接上游節點的欄位 |
$('節點名稱').item.json.欄位 |
取得指定節點的欄位 |
通常會這樣用的原因
例如我後面想要接 Google Sheets 節點儲存資料
但我不想要手動比對欄位
我會先用一個 Set 節點整理好所有欄位資料
再讓他直接存進去,這時候在 Sheet 節點會選 Map Automatically 模式
技巧三:Include Other Input Fields
這是 Set 節點的另一種使用方式
通常我們拿到很多欄位,我們會用上面介紹的方式篩選我們需要的欄位
但有時候其實是我們需要 增加 現有的欄位
例如原本只有 id, name 但我們需要增加時間欄位
這時就會勾選 Include Other Input Fields 來保留原本的所有欄位!
什麼時候該開啟?
新增現有欄位,但要保存原本的所有欄位時!
Manual vs JSON 模式的不同之處
Manual vs JSON 模式
Set 節點有兩種操作模式,各有優缺點:
| 模式 | 適合對象 | 優點 | 缺點 |
|---|---|---|---|
| Manual Mapping | 大部分使用者 | 拖拉點選,視覺化操作 | 欄位多時比較慢 |
| JSON Output | 特殊情況 | 批量設定,可複製貼上 | 需要熟悉 JSON 語法 |
這裡也示範一個 JSON Output 的情境
1 | { |
可以快速的將原本的資料轉換成一個多層 Level 的 JSON 格式
也不用手動一個一個拖拉設定欄位
如果搭配 AI 並且需要處理多個欄位時,速度會快很多
建議:
- 剛開始用 Manual Mapping 熟悉功能
- 只有一次真的要處理超多欄位時,再嘗試使用 JSON Output 模式
常見問題
{{ $json.items.map(item => item.name) }} 提取陣列中每個物件的 name 欄位,或用 .filter()、.find() 等方法處理陣列。總結
Set 節點看似平凡無奇,但其實真的是很常用到的節點
三個核心功能:
- 欄位整理:組合欄位、格式轉換
- 動態表達式:$now 時間、條件判斷、跨節點引用
- Include Other Input Fields:保留原有欄位並新增
另外也想分享整理資料欄位的另一個好處
就是他會節省資料傳遞的記憶體使用量
例如一開始傳進來一大坨資料
但其實你只會用到 1/5 的欄位
如果沒有 Set 節點先整理過
那這一大坨資料就會傳遞到每個節點
會讓 n8n 的記憶體用量增加不少