n8n 實用 Expressions (表達式) 大全:20+個必學範例,讓你資料處理更上一層樓

n8n expressions教學

如果你已經掌握了 n8n 的基本節點操作,那麼下一步,就是學會使用 Expressions (表達式),這將是你從「自動化新手」蛻變為「自動化專家」的關鍵一步。

什麼是 Expressions?簡單來說,它就是 n8n 工作流中的「動態公式」。當你不再滿足於在節點中填寫固定的文字或數字,而是希望節點能夠「動態地」讀取前面步驟的資料、進行計算、轉換格式、甚至做出判斷時,Expressions 就是你的超能力。它就像 Excel 中的儲存格公式,讓你的工作流從一個只會執行靜態指令的機器人,進化成一個能夠靈活處理動態數據的智慧助手。

n8n 的 Expressions 底層基於 JavaScript,功能極其強大。但別擔心,你完全不需要成為 JavaScript 高手!事實上,只要掌握一些常見的語法和範例,就足以應對 95% 以上的自動化場景。

這篇文章就是為你準備的 n8n Expressions 實用大全。我們將從最基礎的資料存取語法開始,分門別類地提供超過 20 個超實用的程式碼範例,涵蓋文字處理、數字運算、日期時間、陣列操作與條件邏輯。建議你將這篇文章收藏起來,當作你未來打造工作流時的速查手冊!

表達式基礎:一切的起點 (Expression Fundamentals)

在我們開始玩轉各種花式操作前,先來打好基礎。所有 Expressions 都離不開這幾個核心概念。

語法結構:{{ ... }}

在 n8n 中,任何時候你看到兩個大括號 {{ }} 包起來的程式碼,就代表這是一個 Expression。當工作流執行到這裡時,n8n 會即時計算括號內的程式碼,並用其結果取代這段語法。

如何存取資料?認識 $json, $item, $node

這是 Expressions 的靈魂,是你從工作流中「取出」資料的鑰匙。

  • $json (最常用): 代表「當前正在被處理的這筆 Item」中的 json 物件。這是你最常使用的變數。
    • 範例:{{ $json.name }} – 取得當前 Item 中,名為 name 的欄位值。
  • $item(index): 讓你能夠精準地存取「輸入端」特定順位的 Item。index 從 0 開始。
    • 範例:{{ $item(0).json.name }} – 不論現在處理到第幾筆,都固定去抓第一筆傳入資料的 name 欄位。
  • $node["Node Name"]: 當你需要回頭抓取前面特定節點的資料時使用。
    • 範例:{{ $node["Read from Sheets"].json.email }} – 抓取名為 “Read from Sheets” 的那個節點所輸出的 email 欄位。

文字處理 (String Manipulation) 實用範例

這是最常見的資料處理情境,無論是組合訊息、清理資料還是提取關鍵字,都無往不利。

組合文字 (Concatenation)

  • 任務:firstNamelastName 兩個欄位組合成一個 fullName
  • 表達式:JavaScript{{ $json.firstName + ' ' + $json.lastName }} 或使用樣板字面值 (Template Literals),更推薦:JavaScript{{ `${$json.firstName} ${$json.lastName}` }}

轉換大小寫 (Case Conversion)

  • 任務: 將 Email 地址全部轉為小寫,以確保格式一致。
  • 表達式:JavaScript{{ $json.email.toLowerCase() }}

擷取部分文字 (Substring)

  • 任務: 從訂單編號 ORD-2025-ABC 中,只提取後面的 ABC 部分。
  • 表達式:JavaScript{{ $json.orderId.split('-')[2] }}
    • 解說: split('-') 會將文字用 - 切割成一個陣列 ['ORD', '2025', 'ABC'][2] 代表取第三個元素。

取代文字 (Replace)

  • 任務: 清理價格欄位中的貨幣符號和逗號,例如將 $1,999.99 轉為 1999.99
  • 表達式:JavaScript{{ $json.price.replace('$', '').replace(',', '') }}

檢查是否包含特定文字 (Contains)

  • 任務: 在 IF 節點中,判斷郵件主旨是否包含「緊急」二字。
  • 表達式:JavaScript{{ $json.subject.includes('緊急') }}
    • 解說: 這個表達式會回傳 truefalse,可以直接用在 IF 節點的條件判斷中。
n8n expressions教學

數字運算與格式化 (Number Operations & Formatting)

處理金額、數量、或任何數值計算時,這些 Expressions 是你的好幫手。

基本四則運算

  • 任務: 計算 totalPrice,等於 price * quantity * 1.05 (含 5% 稅)。
  • 表達式:JavaScript{{ $json.price * $json.quantity * 1.05 }}

格式化為貨幣

  • 任務: 將數字 1234.5 格式化為美金貨幣字串 $1,234.50
  • 表達式:JavaScript{{ $json.amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' }) }}

四捨五入 / 無條件進位 / 捨去

  • 任務: 將計算結果四捨五入到小數點後兩位。
  • 表達式:JavaScript{{ Math.round($json.value * 100) / 100 }}
    • 無條件進位: Math.ceil($json.value)
    • 無條件捨去: Math.floor($json.value)

從文字中提取數字

  • 任務: 將文字 "總計 599 元" 中的數字 599 提取出來。
  • 表達式:JavaScript{{ parseInt($json.text.match(/\d+/)[0]) }}
    • 解說: match(/\d+/) 會用正規表示式找到第一串連續的數字。parseInt() 則將找到的文字數字轉為真正的數字。

日期與時間處理 (Date & Time with Luxon.js)

n8n 內建了強大的 Luxon.js 函式庫來處理日期時間,你可以透過一個特殊的 $now 變數來輕鬆操作。

獲取當前時間: $now

  • 任務: 取得當前工作流執行的時間。
  • 表達式:JavaScript{{ $now }}
    • 解說: 這會回傳一個 Luxon 物件,你可以對它進行各種操作。

格式化日期時間

  • 任務: 將當前時間格式化為台灣常用的 YYYY/MM/DD HH:mm 格式。
  • 表達式:JavaScript{{ $now.toFormat('yyyy/MM/dd HH:mm') }}

日期時間計算 (加/減)

  • 任務: 計算 7 天後的日期。
  • 表達式:JavaScript{{ $now.plus({ days: 7 }) }}
    • 往前推 3 個月: {{ $now.minus({ months: 3 }) }}

計算兩個日期的差距

  • 任務: 計算 orderDateshipDate 之間差了幾天。
  • 表達式:JavaScript{{ DateTime.fromISO($json.shipDate).diff(DateTime.fromISO($json.orderDate), 'days').toObject().days }}
    • 解說: 這需要先用 DateTime.fromISO() 將 ISO 格式的日期文字轉換成 Luxon 物件,才能進行 diff 運算。

陣列與資料結構操作 (Array & Data Structure)

當你的資料中包含列表(陣列)時,這些 Expressions 就非常有用。

獲取陣列長度 (Count)

  • 任務: 計算一個客戶買了幾樣商品(products 是一個陣列)。
  • 表達式:JavaScript{{ $json.products.length }}

獲取陣列中第一個/最後一個項目

  • 任務: 取得訂單中的第一個商品名稱。
  • 表達式:JavaScript{{ $json.products[0].name }}
    • 取得最後一個: {{ $json.products[$json.products.length - 1].name }}

將陣列轉換為文字 (Join)

  • 任務: 將文章的標籤陣列 ["tech", "n8n", "automation"] 轉換成用逗號分隔的文字。
  • 表達式:JavaScript{{ $json.tags.join(', ') }}
    • 輸出結果: "tech, n8n, automation"

條件邏輯 (Conditional Logic)

SetIF 等節點中,你可以用 Expressions 實現更靈活的條件判斷。

三元運算子 (Ternary Operator)

這是一種行內的 IF/ELSE 判斷式,語法是 條件 ? '為true時的值' : '為false時的值'

  • 任務: 根據分數 score 判斷是「及格」還是「不及格」。
  • 表達式:JavaScript{{ $json.score >= 60 ? '及格' : '不及格' }}

處理空值或未定義 (Nullish Coalescing)

當某個欄位可能不存在時,為它提供一個預設值,可以避免工作流出錯。

  • 任務: 如果 userName 欄位存在,就用它的值;如果不存在,就使用預設值「訪客」。
  • 表達式:JavaScript{{ $json.userName || "訪客" }}
n8n expressions教學

結語

Expressions 是 n8n 的精髓所在,是將你的工作流從「死板」變為「靈動」的關鍵。今天我們所列出的 20 多個範例,涵蓋了資料處理中最常見的各種情境,但這僅僅是冰山一角。

真正的力量,在於理解這些範例背後的 JavaScript 基礎(例如 .split(), Math.round(), ||),並開始發揮創意,將它們組合、嵌套,來解決你獨特的業務難題。

建議你將這篇文章加入書籤,每當在 n8n 中需要處理資料卻不知如何下手時,就回來查閱。動手嘗試、不斷實驗,你很快就會發現,Expressions 將成為你在自動化世界中最可靠的夥伴。

發佈留言

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

返回頂端