當資料進入工作流後,它們往往長得不太討喜。有時候 API 給你的欄位名稱是某些工程師才懂的暗號,有時候順序亂得像戰場。這章我們要當資料的美容師,教你如何運用 Edit Fields (Set)Rename KeysSort 節點,把 Item 整理得井然有序。

學習目標 (Goal)

  • 搞懂 Edit Fields (Set) (資料加工廠):增加、刪除或運算新欄位。

  • 掌握 Rename Keys (批次命名大師):快速且大規模地修改欄位名稱。

  • 理解 Sort (排序專家):讓資料按數值、文字或日期進行物理排序。

  • 建立資料「美化與標準化」的維護意識。


核心觀念 (Concepts)

Edit Fields (Set):資料加工廠

這是 n8n 裡使用頻率最高的 Node。它就像是一個萬能加工台,你可以增加新欄位、刪除不必要的資料,或是利用 Expression 進行複雜的運算處理。

Rename Keys:批次命名大師

如果你有數十個欄位需要更名,一個一個在 Edit Fields (Set) 裡搬移會讓你瘋掉。Rename Keys 專門負責這種「大規模換臉」的工作,速度快且不易出錯。

Sort:讓 Item 乖乖排隊

自動化的結果往往需要產出報表或發送通知。學會對 Item 進行排序(例如按金額從大到小排),能讓你的產出更具專業度與閱讀性。


節點配置 (Node Setup)

Edit Fields (Set) Node

  • Mode

    • Manual Mapping:拖拉欄位到輸入框設定 Key(可從 INPUT 拖放,預設會帶出 Expression;可切換為 Fixed 輸入固定值)。欄位少、需視覺化操作時適合。

    • JSON(JSON Output):手動寫入 JSON 作為輸出。結構複雜或需大量 Expression 時適合。

  • Keep Only Set Fields:啟用後會丟棄未在 Fields to Set 中使用的輸入資料,輸出僅保留你設定的欄位。

  • Include in Output:選擇要包含在輸出中的輸入資料(全部、僅選定欄位、或排除特定欄位)。

  • Dot Notation(點記法):欄位名可用 parent.child 建立巢狀結構,例如 number.one 搭配值 20 會產出 { "number": { "one": 20 } }。可從資料樹點選深層屬性自動帶出路徑。

    JSON 模式範例({{ }} 為 Expression 語法;包在引號內會變成字串,不包則保留原類型):

    {
      "newKey": "new value",
      "array": [{{ $json.id }}, "{{ $json.name }}"],
      "object": {
        "innerKey1": "new value",
        "innerKey2": "{{ $json.id }}",
        "innerKey3": "{{ $json.name }}"
      }
    }
    

Rename Keys Node

  • Add new key 新增一組更名。

  • Current Key Name:要更名的欄位名稱(如 cust_email)。

  • New Key Name:新的欄位名稱(如 email)。

  • Node options

    • Regex:適用於多個欄位有相同前綴或後綴時批次更名(如 user_* 改為 *)。須搭配 Replace With 設定替換內容。

    • Case Insensitive:Regex 是否忽略大小寫。

    • Max Depth0 僅處理最上層;-1 不限制深度(巢狀 JSON 如 user.profile.email 時會用到)。

  • CAUTION

    使用 Regex 時,會影響所有符合表達式的 key,包含你已經更名過的 key。建議先確認匹配範圍,或改用一對一更名。

Sort Node

  • Type:預設為 Simple(依欄位升/降序);Random 可打亂 Item 順序;Code 可自訂 JavaScript 比較邏輯。

  • 點擊 Field To Sort By 新增排序欄位。

  • Field Name:輸入欄位名稱(如 amount)。支援 Dot Notation(如 user.amount)排序巢狀欄位。

  • Order:選擇 Ascending(小到大,預設)或 Descending(大到小)。

  • 可新增多個 Sort Field 以實現多欄位排序(先按第一欄,再按第二欄)。

  • NOTE

    Sort 預設會將值轉成字串比較,可能導致數字排序錯誤(例如 "10" 會排在 "2" 前面)。若欄位是數字,建議先在 Edit Fields 轉成數字類型,或使用 Code 模式自訂比較邏輯。

專業操作 (Action)

Step 1: 欄位標準化與排序

我們來玩點真實的。假設你有一組原始資料包含 u_name, u_amount, u_date

  1. 利用 Rename Keys Node 將欄位改為更通用的 name, amount, date
  2. 使用 Sort Node 針對 amount 進行降序排列(由大到小)。
  3. 接上 Edit Fields (Set) Node,新增一個名為 is_vip 的布林值欄位,只要 amount > 500 就標註為 true。

實戰挑戰 (Challenge)

  1. 批次更名練習:模擬一個擁有 10 個混亂欄位名稱的資料結構,嘗試使用 Rename Keys 一次全部轉換為標準格式。
  2. 多重排序實驗:嘗試先按 category 排序,再按 amount 排序,觀察 n8n 處理多重 Sort 的邏輯。
  3. 條件標籤化:在 Edit Fields 中練習更複雜的 Expression,例如根據城市 (city) 自動分配區域 (region) 欄位。

TIP

當你發現工作流中有很多 Edit Fields (Set) 時,可以檢查一下是否有機會用 Rename Keys 或一個 Code 節點來簡化邏輯,保持畫布整潔。


範例 (Example)