目次
n8nのデータ構造入門:items、JSON、ノードによる複数データの処理
n8nで最も重要で、つまずきやすい概念は、ノード間で渡されるのは1件のデータではなく、複数のデータからなるリスト(items)であるということです。
itemsの形
ノードの出力は、JSONビューでは次のように表示されます。
[
{ "name": "太郎", "email": "ming@example.com" },
{ "name": "花子", "email": "hua@example.com" },
{ "name": "美咲", "email": "mei@example.com" }
]
これは3つのitemsです。n8n内部では、各itemは次のような構造になっています。
{
"json": { "name": "太郎", "email": "ming@example.com" },
"binary": { }
}
json:通常のデータです。式の$jsonはこの値を指します。binary:ファイルデータ(画像、PDF、スプレッドシートファイルなど)です。ファイルを処理する場合にだけ現れます。
ノードは各itemに対して1回実行される
これはn8nで最も重要なルールです。前のノードが3件のデータを出力し、次のノードが「Send Email」ノードだとします。
[Google Sheets] ──3 items──▶ [Send Email]
メールを3通送信(各itemにつき1通)
ループを書く必要はありません。n8nが自動的に処理します。Send Emailノード内の {{ $json.email }} は、1件目を処理するときは ming@example.com、2件目は hua@example.com となり、以降も同様です。
ノードの右上に表示される数値(例:3 items)は、出力された件数です。

「メッセージが5回送信されたのはなぜですか?」
最もよくある原因は、上流ノードが5つのitemsを出力し、下流の「メッセージ送信」ノードが5回実行されたことです。対処方法は次のとおりです。
- 1回だけ実行したい場合:そのノードの Settings で Execute Once を有効にすると、最初のitemだけが処理されます。
- 複数のデータを1つのメッセージにまとめたい場合:まず Aggregate または Summarize ノードを使って複数のデータを1件にまとめます。
よく使うデータ変換ノード
| ノード | 役割 | 例 |
|---|---|---|
| Split Out | 1件のデータ内の配列を複数件に分割する | APIが返す { "orders": [...] } を分割し、注文ごとに1つのitemにする |
| Aggregate | 複数のデータのフィールドを配列にまとめ、1件にする | 10件の注文をまとめて、概要を一度に送信する |
| Summarize | グループごとに集計する(合計、件数、平均) | 地域ごとに売上を集計する |
| Limit | 先頭からN件だけ残す | 最新の5件の記事だけを処理する |
| Remove Duplicates | 重複データを削除する | 同じメールアドレスには1回だけ送信する |
| Sort | 並べ替える | 日付順に並べ替える |
| Filter | 条件に一致するデータだけ残す | 金額が1000を超える注文だけを処理する |
| Edit Fields (Set) | フィールドを追加、変更、削除する | 必要なフィールドだけを残す |
例:APIが返す配列を分割する
HTTP Requestで取得したデータは、「1つのitemの中に配列がある」形で返されることがよくあります。
[
{
"results": [
{ "id": 1, "title": "記事A" },
{ "id": 2, "title": "記事B" }
]
}
]
この場合、下流のノードは1回だけ実行されます。Split Outノードを追加し、フィールドに results を指定すると、2件に分かれます。
[
{ "id": 1, "title": "記事A" },
{ "id": 2, "title": "記事B" }
]

アイテムリンク(item linking)
n8nは、各出力データがどの入力データから生成されたかを記憶しています。そのため、後続のノードで、前のノードにある同じデータの値を取得できます。
{{ $('Google Sheets').item.json.name }}
これは、「現在のデータに対応する、Google Sheetsノード内のデータのname」を意味します。式の詳しい説明は式のチュートリアルを参照してください。
複数の入力:Mergeノード
フローが2つの経路に分かれ、再び1つにまとめる場合は、Mergeノードを使います。
| モード | 説明 |
|---|---|
| Append | 両方のデータをつなげる |
| Combine by matching fields | 共通フィールドで結合する(SQLのJOINに似ています)。例:emailを使って顧客データと注文を対応させる |
| Combine by position | 1件目同士、2件目同士を対応させる |
| Choose branch | 両方の処理が完了してから、片方だけを出力する |
バイナリデータ(ファイル)
ファイルを読み込む、画像をダウンロードする、添付ファイルを受け取るといった場合、データは binary に格納されます。OUTPUTのBinaryタブでプレビューまたはダウンロードできます。よく使うノードは次のとおりです。
- Extract from File:CSV、Excel、PDF、JSONファイルから内容を取り出し、itemsにする
- Convert to File:itemsをCSV、Excel、JSONファイルに変換する
- Read/Write Files from Disk:サーバー上のファイルを読み書きする(n8n 2.xでは、デフォルトで特定のフォルダーのみ許可されています)
まとめ
- ノード間で渡されるのはitems配列です。
- 各ノードは各itemに対して1回実行されるため、自分でループを書く必要はありません。
- Split Outで分割し、Aggregateでまとめ、Mergeで結合します。
- 繰り返しの実行を避けるには、Execute Onceを有効にするか、先にデータをまとめます。
更新日 2026年10月12日