目次

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)は、出力された件数です。

Split Outの後にノードが複数のデータを処理
実行後、接続線に各区間で渡されたitemsの数が表示されます。Ifノードはデータをtrueとfalseの2つの経路に分けます。

「メッセージが5回送信されたのはなぜですか?」

最もよくある原因は、上流ノードが5つのitemsを出力し、下流の「メッセージ送信」ノードが5回実行されたことです。対処方法は次のとおりです。

  • 1回だけ実行したい場合:そのノードの Settings で Execute Once を有効にすると、最初のitemだけが処理されます。
  • 複数のデータを1つのメッセージにまとめたい場合:まず Aggregate または Summarize ノードを使って複数のデータを1件にまとめます。

よく使うデータ変換ノード

ノード役割例
Split Out1件のデータ内の配列を複数件に分割する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" }
]
Split Outで配列を3件のデータに分割
Split Out:INPUTはresults配列を含む1件のデータで、OUTPUTは3件になります。

アイテムリンク(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 position1件目同士、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日