
如果你已經掌握了 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)
- 任務: 將
firstName
和lastName
兩個欄位組合成一個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('緊急') }}
- 解說: 這個表達式會回傳
true
或false
,可以直接用在 IF 節點的條件判斷中。
- 解說: 這個表達式會回傳

數字運算與格式化 (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 }) }}
- 往前推 3 個月:
計算兩個日期的差距
- 任務: 計算
orderDate
和shipDate
之間差了幾天。 - 表達式: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)
在 Set
或 IF
等節點中,你可以用 Expressions 實現更靈活的條件判斷。
三元運算子 (Ternary Operator)
這是一種行內的 IF/ELSE 判斷式,語法是 條件 ? '為true時的值' : '為false時的值'
。
- 任務: 根據分數
score
判斷是「及格」還是「不及格」。 - 表達式:JavaScript
{{ $json.score >= 60 ? '及格' : '不及格' }}
處理空值或未定義 (Nullish Coalescing)
當某個欄位可能不存在時,為它提供一個預設值,可以避免工作流出錯。
- 任務: 如果
userName
欄位存在,就用它的值;如果不存在,就使用預設值「訪客」。 - 表達式:JavaScript
{{ $json.userName || "訪客" }}

結語
Expressions 是 n8n 的精髓所在,是將你的工作流從「死板」變為「靈動」的關鍵。今天我們所列出的 20 多個範例,涵蓋了資料處理中最常見的各種情境,但這僅僅是冰山一角。
真正的力量,在於理解這些範例背後的 JavaScript 基礎(例如 .split()
, Math.round()
, ||
),並開始發揮創意,將它們組合、嵌套,來解決你獨特的業務難題。
建議你將這篇文章加入書籤,每當在 n8n 中需要處理資料卻不知如何下手時,就回來查閱。動手嘗試、不斷實驗,你很快就會發現,Expressions 將成為你在自動化世界中最可靠的夥伴。