初心者向け

n8n Split Outノードの使い方:入れ子の配列をコードなしで展開する

n8nのSplit Outノードで、1件のデータの中にある配列を複数件に展開する方法を解説します。配列インデックスを含むパスの書き方と、他のフィールドを残したときの挙動を実際に確認しました。

動作確認: — n8n 2.36.8 / Split Out ノード v1 / Aggregate ノード v1

APIから返ってくるデータは、1件の中に配列が入っている形がよくあります。 これを「配列の要素ごとに1件」のデータに展開するのが Split Outノードです。

Codeノードの記事では、同じことを JavaScript のループで書きました。 Split Out を使えば、コードを書かずに同じ結果が得られます。

内容は n8n 2.36.8 / Split Out ノード v1 で実際に動かして確認しています。

Split Out は何をするものか

1件のデータの中にある配列を、複数件のデータに展開するノードです。

1件のデータofficeareas要素1 / 要素2 / 要素3(配列が入れ子になっている)Split OutAggregate3件のデータ要素1要素2要素3展開すると、後続のノードは1件ずつ処理できるようになる既定では、元の office のような他のフィールドは引き継がれない
Split Out は1件の中の配列を複数件に展開する。Aggregate はその逆。

なぜこれが必要かというと、n8n のノードは「1件ずつ」処理するのが基本だからです。 配列が入れ子のままだと、後続のノードで1件ずつ扱えません。

展開してしまえば、IF で振り分けたり、Edit Fields で整えたりが素直にできます。

実際に展開してみる

気象庁のデータを例にします。この JSON は、地域ごとの情報が timeSeries の中の areas という配列に入っています。

{
  "office": "気象庁",
  "reportedAt": "2026-09-24T17:00:00+09:00",
  "timeSeries": [
    { "areas": [ { "name": "東京地方" }, { "name": "伊豆諸島北部" } ] }
  ]
}

手順

  1. Split Out ノードを追加する
  2. Fields To Split Out に展開したい配列のパスを書く
  3. Execute step を押す

パスの書き方が要点です。今回はこう書きます。

timeSeries[0].areas

配列のインデックス([0])を含むパスが使えます。 実行すると、 1件だったデータが2件になりました。

{ "name": "東京地方" }
{ "name": "伊豆諸島北部" }

Code ノードで書いていたループが、この指定1行で置き換わりました。

Split Outノードの実行結果。左の入力は1件でoffice、reportedAt、timeSeriesの中にareas[0]とareas[1]が入れ子になっている。中央のFields To Split OutにtimeSeries[0].areas、IncludeにNo Other Fields。右の出力は2件でnameだけが残り、東京地方と伊豆諸島北部が表示されている
左の入力は1件。右の出力は2件。office と reportedAt が消えていることにも注目

この1枚に、この記事で伝えたいことが全部写っています。 入力1件が出力2件になり、同時に office と reportedAt が消えています。

パスの書き方

$json. は付けません。 フィールド名をそのまま書きます。

なお、$json.timeSeries[0].areas と書いても同じ結果になりました。 ただし公式の案内は「付けない」なので、素直に timeSeries[0].areas と書く方が安全です。

複数の配列を同時に展開したい場合は、設定欄の下にある + Add Field で欄を増やします。 (ノードの定義上はカンマ区切りでも指定できます)

既定では、他のフィールドが消える

Include という設定があり、**既定は No Other Fields(他のフィールドを含めない)**です。

上の実行結果を見ると、出力は { "name": "東京地方" } だけでした。 元のデータにあった office と reportedAt は消えています。

Edit FieldsやSwitchと同じパターンです。 n8n のノードは明示的に指定したものだけを通す設計になっています。

他のフィールドを残すと、構造が崩れる

では Include を All Other Fields にすれば解決かというと、 そう単純ではありませんでした。

実際に試した結果がこれです。

{
  "office": "気象庁",
  "reportedAt": "2026-09-24T17:00:00+09:00",
  "timeSeries": [ {} ],
  "timeSeries[0].areas": { "name": "東京地方" }
}

2つ、想定外のことが起きています。

  • timeSeries が [{}] として残る — areas を抜き取った「抜け殻」がそのまま残っている
  • キー名が timeSeries[0].areas になる — パスの文字列がそのままフィールド名になっている

このままだと、後続のノードで値を取り出すのが面倒になります。

出力先の名前を指定する

Options の + Add Field から Destination Field Name を追加すると、 展開した値を入れるフィールド名を指定できます。

Split OutノードのOptionsを開いた状態。Destination Field Nameの入力欄が表示されている
Options に追加してはじめて画面に出る

area を指定して実行したところ、こうなりました。

{
  "office": "気象庁",
  "reportedAt": "2026-09-24T17:00:00+09:00",
  "timeSeries": [ {} ],
  "area": { "name": "東京地方" }
}

キー名が扱いやすくなりました。 抜け殻の timeSeries は残りますが、 不要なら後続の Edit Fields で外せます。

入れ子の配列を展開して、かつ他のフィールドも残したい場合は、 Destination Field Name を指定してください。 指定しないと、 パスがそのままキー名になります。

逆操作:Aggregate

Aggregate ノードは Split Out の逆で、複数件を1件の配列にまとめます。

「展開して1件ずつ処理し、最後にまとめて1回だけ通知する」という流れで使います。

  • 個別のフィールドをまとめる — 指定したフィールドの値だけを配列にする
  • 全データをまとめる — 各件のデータ全体を配列にする

こちらにも既定値の注意があります。値が欠けている件を配列に含めるかどうかの設定は 既定でオフなので、欠損がある場合は件数がずれます。

Code と Split Out の使い分け

同じことができる場面が多いので、基準を決めておくと迷いません。

Split Out が向いている

  • 配列を展開するだけ
  • キャンバスを見ただけで「ここで展開している」と分かってほしい場合

Code が向いている

  • 展開しながら値を加工したい(条件で絞る、フィールドを計算する)
  • 複数階層を同時に扱う
  • 展開のルールが複雑

Codeノードの記事で書いたコードは、 展開しながら isRainy を計算していたので、あれは Code が適切な例でした。 単に展開するだけなら Split Out の方が読みやすくなります。

うまくいかないときの切り分け

  1. 何も出てこない — パスが合っているか。$json. は不要
  2. 他のフィールドが消えた — Include が No Other Fields のままではないか
  3. キー名がパスになっている — Destination Field Name を指定する
  4. フィールド名に . が含まれる — Options で Disable Dot Notation をオンにする
  5. 配列が入れ子の最上位にある — 先に Edit Fields か Code で名前を付けた形にする

次に読む

次に読む