數據整理與轉換:Code 節點的應用【n8n 基礎篇07】

在 n8n 的世界裡, 幾乎所有「文字整理、格式轉換、資料清洗」的工作,最後都會回到一個地方:Code Node。 很多人一開始會以為 n8n 有像其他工具一樣的「Text 節點」, 但實際上 n8n 並沒有獨立的 Text Node。 文字處理 = Code Node(JavaScript) 而且放心,大多數情境只需要幾行 code, 不需要你成為工程師,也不需要寫什麼複雜演算法。

Code Node 是什麼?為什麼它這麼重要?

Code Node 讓你可以在流程中:

  • 操作字串(String)
  • 清洗與格式化資料
  • 重組 JSON 結構
  • 加上條件與計算邏輯

你可以把它想成:

n8n 裡的「資料整理工作台」

只要你流程中有「資料要變乾淨、變好用」,
Code Node 幾乎一定會出現。


常見文字處理:全部用 Code Node 完成

1. 去除多餘空白、換行

實務上,來自表單、文字辨識OCR、API 的文字常常長這樣:

    Hello   
World

包含換行、tab、奇怪的空白鍵。

在 Code Node 裡可以這樣進行處理:

return items.map(item => {
  item.json.text = item.json.text
    .replace(/\s+/g, ' ')
    .trim();
  return item;
});

輸出結果:

Hello World

👉 這是 n8n 裡最常見的第一步清洗


2. 替換文字(讓內容格式統一)

例如:

  • 台北市 → 臺北市
  • , → 、
  • 半形符號 → 全形符號
return items.map(item => {
  item.json.address = item.json.address
    .replace('台北市', '臺北市')
    .replace(/,/g, '、');
  return item;
});

上面應用在產報表、產文件、政府申報資料時非常重要。


3. 切割 / 拆解字串

很多資料會是一整串字:

蛋糕, 麵包, 可頌

在 Code Node 裡切割:

return items.map(item => {
  item.json.products = item.json.products
    .split(',')
    .map(p => p.trim());
  return item;
});

輸出變成:

["蛋糕", "麵包", "可頌"]

接下來再接 Loop / Split In Batches,讓工作流一項一項處理就會非常順利。


4. 組裝模板字串(通知、報表超常用)

例如要組一句話:

{name} 訂購了 {product},總金額 {price} 元

Code Node 直接寫:

return items.map(item => {
  item.json.message =
    `${item.json.name} 訂購了 ${item.json.product},總金額 ${item.json.price} 元`;
  return item;
});

不管是寄 Email、Slack、LINE、Webhook,全部都可以靠這一招完成工作。


Code Node:資料轉換的進階應用

當需求不只是文字,而是「資料結構與邏輯」,
Code Node 就正式進入主場。


1. 重組 JSON 結構

JSON 是一種開發人員很常使用管理文字的格式,而每種 JSON結構都略有不同,我們可以經由改寫 node節點,來重構 JSON資料。

原始資料:

{
  "user": {
    "name": "麥特",
    "email": "test@example.com"
  },
  "order": {
    "id": "A123",
    "total": 250
  }
}

這裡我們只保留需要的欄位():

return items.map(item => ({
  json: {
    name: item.json.user.name,
    total: item.json.order.total
  }
}));

最後顯示出來的內容就會只有我們需要的資訊:

[
  {
    "json": {
      "name": "麥特",
      "total": 250
    }
  }
]

先整理結構,後面流程會乾淨很多。


2. 條件過濾與資料清洗

return items
  .filter(item => item.json.total > 0)
  .map(item => {
    item.json.priceWithTax = item.json.total * 1.05;
    return item;
  });
  • 無效資料先擋掉(過濾掉 total 值小於或等於 0 的資料)
  • 計算邏輯集中處理(計算出一個新的欄位 priceWithTax,代表含稅金額 5%)

在code節點中直接過去條件並加上基礎的計算,可以避免後面節點被奇怪資料卡死。


3. 計算與格式轉換

常見用途包含:

  • 金額加總
  • 稅金計算
  • UTC → 台灣時間
  • 字串與數值混合處理
  • 單位轉換

這些都適合在 同一顆 Code Node 解決乾淨


實務心法:Code Node 怎麼用才不會亂?

以下這是我實戰中的經驗

需求類型做法
去空白、替換、切割字串✅ Code Node
通知文字 / 模板組裝✅ Code Node
JSON 重組 / 計算邏輯✅ Code Node 主場
條件過濾 / 型別轉換✅ Code Node

重點不是「寫不寫 code」,而是「用一顆 Code Node 幫你完成文字處理的事」。


常見流程組合:Code + Loop + Merge

在 n8n 裡,我最常用的實戰結構是:

Code(清洗字串)
→ Loop / Split In Batches
→ Code(計算 / 重組)
→ Merge

實際案例:營養標示自動產生

我們在工作流前面,收到表單送進來的是一整串文字:

麵粉 300g, 糖 50g, 奶油 100g

流程設計:

1️⃣ Code:切割原料字串、清理格式
2️⃣ Loop:一項一項處理原料
3️⃣ Code:計算熱量與營養素
4️⃣ Merge:輸出完整營養標示

使用code節點,全程不用 Excel。

將文字處理流程直接交給n8n跑,最後給使用看到正確的標籤內容。


Code Node 使用小提醒(很重要)

  • 一定要回傳 items 陣列
  • Debug 時善用: console.log(item.json); 搭配 Execution Data 查看
  • 不要把所有邏輯塞在一顆 Code
  • 邏輯拆小,流程才會好維護

結語

在 n8n 裡:

Code Node 不是進階
Code Node 是基本功

它不會像 IF、Loop 那麼花俏,
每一條成熟、穩定的自動化流程,幾乎都靠它撐起來

當你開始用 Code Node
來「整理資料 → 建立結構 → 驅動流程」,

你就已經不只是拉線,
而是在設計一套真正能跑的自動化系統


延伸閱讀(我的 n8n 系列文章)

發佈留言

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