目次
n8n Expressions 入門:$json、$('ノード')、日付と便利な関数
Expressions を使うと、ノードのパラメーターをデータに応じて動的に変化させられます。どのパラメーターフィールドも Expression モードに切り替えられます(フィールド横の Fixed / Expression 切り替えを使うか、{{ を直接入力します)。
{{ }} の中には JavaScript を記述するため、JavaScript の構文やメソッドを利用できます。
現在のデータを参照する:$json
{{ $json.name }}
{{ $json.address.city }}
{{ $json.tags[0] }}
{{ $json["フィールド 名"] }}
フィールド名に空白や特殊文字が含まれる場合は、中括弧 [...] を使います。
最も簡単な方法は、左側の INPUT パネルからフィールドをドラッグしてパラメーターに入れることです。n8n が正しい Expression を自動で生成します。

他のノードのデータを参照する:$('ノード名')
$json で参照できるのは直前のノードの出力だけです。それより前のノードを参照するには、次のようにします。
{{ $('Google Sheets').item.json.email }}
| 書き方 | 意味 |
|---|---|
$('ノード').item | 現在のデータに対応するデータ(最もよく使います) |
$('ノード').first() | そのノードが出力した最初のデータ |
$('ノード').last() | 最後のデータ |
$('ノード').all() | すべての items(配列) |
{{ $('Webhook').item.json.body.customer_id }}
{{ $('設定を取得').first().json.api_url }}
{{ $('注文').all().length }} 件の注文
ノード名を変更すると、Expression 内の名前も 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 ?? '未入力' }}
条件に応じて異なるフローを実行する場合は、Expression で処理せず、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 は今日の午前0時です。
{{ $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 | 今回の実行でノードが何回目に実行されたか |
複数行の処理と複雑なロジック
Expression では、即時実行関数を記述できます。
{{ (() => {
const total = $json.items.reduce((s, i) => s + i.price * i.qty, 0);
return total >= 1000 ? total : total + 60;
})() }}
ただし、ロジックが数行を超える場合は、Code ノードに移すと読みやすく、デバッグもしやすくなります。
デバッグのヒント
- Expression フィールドの下にプレビュー結果がリアルタイムで表示されます。赤色はエラーを示します。
- プレビューには前回の実行データが使われます。プレビューを表示するには、先に前のノードを実行してください。
Cannot read properties of undefinedは、パスの途中に存在しない階層があることを示します。?.を使うとエラーを回避できます:{{ $json.address?.city }}。- データ全体を確認するには、
{{ JSON.stringify($json) }}を使います。
更新日 2026年10月12日