n8n Set 節點教學:你的資料瑞士刀,新增、修改、篩選欄位一次搞定

n8n set node教學

當你在 n8n 中串接各種 API、Webhook 或讀取 Google Sheets 時,你一定很快就會發現一個殘酷的事實:得到的原始資料,永遠不會是你想要的完美模樣。

可能的情況有:資料中缺少一個「狀態」欄位來追蹤進度;金額和數量需要相乘才能得到總價;API 一次回傳了 50 個你根本用不到的欄位,把你的資料搞得亂七八糟;又或者,價格欄位竟然是「文字」格式,導致後續的計算全部出錯。

面對這些混亂的數據,你該如何整理和加工?答案就是 n8n 中最基本、最常用,也最強大的工具之一:Set 節點

Set 節點就像是你在 n8n 工作流中的一把資料瑞士刀,它專門用來對流經它的每一筆資料 (Item) 進行加工處理。無論是新增、修改、還是篩選欄位,它都能輕鬆搞定。這篇文章將帶你徹底解析 Set 節點的核心功能與實戰技巧,讓你學會如何優雅地整理你的數據,為後續的自動化步驟鋪平道路。

什麼是 n8n Set 節點?工作流中的數據魔術師

在 n8n 的世界裡,如果說 HTTP Request 節點是負責「獲取」資料的工人,那麼 Set 節點就是負責「加工」資料的魔術師。

它的核心原則非常簡單:Set 節點會接收從上游傳來的所有資料 (Items),然後根據你的設定,對「每一筆」資料的內部欄位進行操作,最後再將同樣數量的、但內容已被修改的資料傳遞給下游。

你可以把它想像成一條產品加工生產線:

  1. 原料進站 (Input): 100 個半成品(Items)進入 Set 節點這個加工站。
  2. 加工處理 (Settings): 你下達指令,例如「幫每個產品都貼上一個『待檢驗』的標籤」或「把每個產品的長度都增加 5 公分」。
  3. 成品出站 (Output): 100 個被加工過的成品(修改後的 Items)離開加工站,前往下一個流程。

關鍵在於,Set 節點只會改變 Item 內部的資料,並不會改變 Item 的數量。進來 100 筆,出去就是 100 筆,只是每筆資料的內容可能已經煥然一新。

基礎功能一:新增一個全新的資料欄位 (Add Field)

這是 Set 節點最基本、最直觀的用途:為流經的資料增加新的欄位。

設定方式

Set 節點的介面非常簡單,主要就是一排排的「Name」和「Value」:

  • Name: 你想要新增的欄位名稱(Key)。
  • Value: 你想給這個新欄位的值(Value)。

實戰範例:為客戶資料加上「處理狀態」標籤

情境: 當你的網站有新用戶註冊時,Webhook 會觸發 n8n 流程。你想為這筆新用戶資料加上一個 status 欄位,並將其初始值設定為 pending,方便後續追蹤。

設定步驟:

  1. 在 Webhook 節點後方,連接一個 Set 節點。
  2. 在 Set 節點的設定中:
    • Name 欄位:輸入 status
    • Value 欄位:直接輸入文字 pending
    • Data Type 應為 String (文字)。

執行後,你會在 Output 中看到,原本的用戶資料多出了一個 "status": "pending" 的欄位,成功為資料進行了「賦值」。

n8n set node教學

基礎功能二:修改已存在的欄位值 (Modify Field)

如果你的目標不是新增,而是修改一個已經存在的欄位,操作方式完全一樣。Set 節點會自動判斷:如果你在 Name 欄位輸入的名稱,與傳入的資料中某個欄位名稱相同,它就會用新的 Value 覆蓋掉舊的 Value。

設定方式

與新增欄位相同,只要確保你的 Name 和要修改的目標欄位名稱完全一致即可。

實戰範例:利用 Expression 動態計算訂單總價

情境: 你的訂單資料包含 price (單價) 和 quantity (數量) 兩個欄位。你需要計算出總金額,並存入一個名為 total_amount 的新欄位中。

設定步驟:

  1. 在 Set 節點中,點擊「Add Value」。
  2. Name 欄位:輸入 total_amount
  3. Value 欄位:這裡我們不能寫死一個數字,而是要動態計算。點擊 f(x) 圖示,切換到 Expression 模式,輸入以下語法: {{ $json.price * $json.quantity }} 這串程式碼的意思是:「抓取當前這筆資料的 price 欄位值,和 quantity 欄位值,然後將它們相乘。」
  4. 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 (天氣狀況) 這三個欄位。

設定步驟:

  1. 在 HTTP Request 節點後方,連接一個 Set 節點。
  2. 在 Set 節點的「Options」中,將 Keep Only Set 開關打開。
  3. 點擊「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 }}
  4. 執行後,你會發現 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 node教學

結語

n8n 的 Set 節點,是你踏入資料處理世界的第一步,也是最重要的一步。它雖然不像 Code 節點那樣能執行任意複雜的程式,但它提供的圖形化介面,已經足以讓你用極高的效率,完成 90% 以上的日常資料加工任務。

讓我們再次回顧 Set 節點這把強大瑞士刀的四大核心功能:

  1. 新增 (Add): 為資料流加上新的標籤與屬性。
  2. 修改 (Modify): 覆蓋舊有資料,或透過 Expression 動態計算新值。
  3. 篩選 (Filter): 利用「Keep Only Set」大刀闊斧地清理數據,只保留精華。
  4. 轉換 (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 節點教學:一個「什麼都不做」的節點,為何是整理工作流的神器?

發佈留言

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

返回頂端