目錄

n8n 運算式教學:$json、$('節點')、日期與常用函式

運算式讓節點的參數可以根據資料動態變化。任何參數欄位都可以切換成 Expression 模式(欄位旁的 Fixed / Expression 切換,或直接輸入 {{)。

{{ }} 裡面寫的是 JavaScript,所以 JavaScript 的語法和方法都能使用。

讀取目前這筆資料:$json

{{ $json.name }}
{{ $json.address.city }}
{{ $json.tags[0] }}
{{ $json["欄位 名稱"] }}

欄位名稱有空格或特殊字元時,用中括號 ["..."]。

最簡單的方法是從左邊的 INPUT 面板把欄位拖曳到參數中,n8n 會自動產生正確的運算式。

Edit Fields 節點使用運算式產生訊息
Edit Fields:左邊把 INPUT 的欄位拖進運算式,右邊 OUTPUT 立即顯示組合好的訊息

讀取其他節點的資料:$(‘節點名稱’)

$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.modetest(手動測試)或 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日