目錄
n8n 運算式教學:$json、$('節點')、日期與常用函式
運算式讓節點的參數可以根據資料動態變化。任何參數欄位都可以切換成 Expression 模式(欄位旁的 Fixed / Expression 切換,或直接輸入 {{)。
{{ }} 裡面寫的是 JavaScript,所以 JavaScript 的語法和方法都能使用。
讀取目前這筆資料:$json
{{ $json.name }}
{{ $json.address.city }}
{{ $json.tags[0] }}
{{ $json["欄位 名稱"] }}
欄位名稱有空格或特殊字元時,用中括號 ["..."]。
最簡單的方法是從左邊的 INPUT 面板把欄位拖曳到參數中,n8n 會自動產生正確的運算式。

讀取其他節點的資料:$(‘節點名稱’)
$json 只能讀取上一個節點的輸出。要讀取更早的節點:
{{ $('Google Sheets').item.json.email }}
| 寫法 | 意思 |
|---|---|
$('節點').item | 與目前這筆資料對應的那一筆(最常用) |
$('節點').first() | 該節點輸出的第一筆 |
$('節點').last() | 最後一筆 |
$('節點').all() | 所有 items(陣列) |
{{ $('Webhook').item.json.body.customer_id }}
{{ $('取得設定').first().json.api_url }}
{{ $('訂單').all().length }} 筆訂單
節點名稱改了,運算式中的名稱 n8n 會自動跟著更新。
字串處理
{{ $json.name.trim() }}
{{ $json.email.toLowerCase() }}
{{ $json.title.slice(0, 50) }}…
{{ $json.text.replaceAll('\n', ' ') }}
{{ `您好 ${$json.name},您的訂單 ${$json.order_id} 已出貨。` }}
{{ $json.tags.join('、') }}
n8n 也提供一些額外的方法:
{{ $json.email.isEmail() }}
{{ $json.content.extractUrl() }}
{{ $json.title.toTitleCase() }}
數字
{{ $json.price * 1.05 }}
{{ Math.round($json.score * 10) / 10 }}
{{ Number($json.amount).toLocaleString('zh-TW') }}
{{ ($json.done / $json.total * 100).toFixed(1) }}%
API 回傳的數字有時是字串,計算前先用 Number() 轉換。
條件判斷
{{ $json.amount > 1000 ? 'VIP' : '一般' }}
{{ $json.nickname || $json.name }}
{{ $json.phone ?? '未提供' }}
需要依條件走不同流程時,使用 If 或 Switch 節點,而不是在運算式中處理。
陣列
{{ $json.items.length }}
{{ $json.items.map(i => i.name).join(', ') }}
{{ $json.items.filter(i => i.stock === 0).length }}
{{ $json.scores.reduce((a, b) => a + b, 0) }}
日期與時間
n8n 內建 Luxon 日期函式庫,$now 是現在時間,$today 是今天零點:
{{ $now.toFormat('yyyy-MM-dd HH:mm') }}
{{ $today.minus({ days: 1 }).toFormat('yyyy/MM/dd') }}
{{ $now.plus({ hours: 2 }).toISO() }}
{{ $now.setZone('Asia/Taipei').toFormat('MM月dd日 HH:mm') }}
{{ $now.weekday }} // 1 = 星期一 … 7 = 星期日
解析資料中的日期字串:
{{ DateTime.fromISO($json.created_at).toFormat('yyyy-MM-dd') }}
{{ DateTime.fromFormat($json.date, 'yyyy/MM/dd').plus({ days: 7 }).toISODate() }}
{{ $json.created_at.toDateTime().diffTo($now, 'days') }}
時區以 n8n 或工作流程的時區設定為準,記得設定成 Asia/Taipei。
常用內建變數
| 變數 | 內容 |
|---|---|
$json | 目前這筆資料 |
$binary | 目前這筆資料的檔案 |
$input.all() | 這個節點收到的所有 items |
$now、$today | 現在時間、今天 |
$execution.id | 這次執行的 ID |
$execution.mode | test(手動測試)或 production |
$workflow.name | 工作流程名稱 |
$vars.名稱 | 自訂變數(部分方案提供) |
$runIndex | 節點在這次執行中第幾次執行 |
多行與複雜邏輯
運算式中可以寫立即執行的函式:
{{ (() => {
const total = $json.items.reduce((s, i) => s + i.price * i.qty, 0);
return total >= 1000 ? total : total + 60;
})() }}
但邏輯一旦超過幾行,建議改用 程式碼節點,比較好閱讀與除錯。
除錯技巧
- 運算式欄位下方會即時顯示預覽結果,紅色代表錯誤。
- 預覽使用的是上一次執行的資料,先執行前面的節點才能看到預覽。
Cannot read properties of undefined代表路徑中某一層不存在,用?.避免錯誤:{{ $json.address?.city }}。- 想看整筆資料:
{{ JSON.stringify($json) }}。
更新於 2026年10月12日