Codeでデータを加工し、Loop on Itemsで繰り返し処理する方法

このページでできること

前のステップで取得したデータをCodeやData Mapperで配列に整え、Loop on Itemsで1件ずつ処理する方法を説明します。
次のような場合に利用します。
  • 複数の値を1つの配列にまとめたい
  • Codeで作成した配列をLoop on Itemsへ渡したい
  • 「The items you have selected must be a list.」と表示される
  • Codeの出力が後続ステップのデータセレクターに表示されない
  • APIのページ番号など、繰り返し処理に使う配列を作りたい

Loop on Itemsの「Items」には何を設定する?

Loop on Itemsの「Items」には、繰り返し処理したい配列を、前のステップの出力から指定します。
例えば、前のステップの出力が次のようになっている場合、
Loop on Itemsの「Items」には、データセレクターから を選択します。
変数を直接指定する場合は、例えば次のようになります。
これにより、 に含まれる3件を1件ずつ処理します。

と直接入力するのではありません

Items欄に、
と文字として入力しても、3件の配列として扱われるとは限りません。
Loop on Itemsには、Code、API、検索ピース、Data Mapperなど、前のステップが実際に出力した配列を指定してください。
例えばCodeでページ番号を作る場合は、
と出力して、
とします。

オブジェクト全体ではなく、配列部分を指定する

例えば、
という出力の場合、Itemsに指定するのは ではなく、 です。
変数で指定する場合は、
となります。
⚠️
と表示された場合は、Itemsに配列ではなく、文字列・数値・オブジェクト全体などを指定している可能性があります。
前のステップをテストし、実行結果の中から と複数件並んでいる配列部分を選択してください。

Codeで配列を作ってLoop on Itemsへ渡す

CodeからLoopへ渡す場合は、配列に名前を付けてオブジェクトとして返す方法をおすすめします。

Codeの設定例

Codeをテストすると、次のような結果になります。
その後、Loop on Itemsの「Items」で、
を選択します。

なぜ配列に名前を付けて返すのか

のように名前を付けると、
  • データセレクターで見つけやすい
  • 何の配列なのか判断しやすい
  • 配列以外の情報も同時に返せる
ため、後続ステップで扱いやすくなります。

複数の値を1つの配列にまとめる

例えば、前のステップで次の4つの値を取得しているとします。
  • device1
  • quantity1
  • device2
  • quantity2
これを2件のデータとしてLoopしたい場合は、Codeで次のように配列を作ります。
出力例:
Loop on ItemsのItemsには を指定します。
ループ内では、現在処理している1件の や を後続ステップで利用できます。

JSON形式の文字列を配列に変換する

前のステップから次のような値を受け取っていても、
実際のデータ型が文字列の場合、そのままではLoop on Itemsへ渡せません。
この場合はCodeで を使って配列に変換します。
⚠️
がすでに配列の場合は は不要です。
見た目だけではなく、Codeのテスト結果で実際のデータ構造を確認してください。

CodeとData Mapperの使い分け

やりたいこと向いている方法
複数の固定項目を1つにまとめるData Mapper
JSONや配列の構造を組み替えるData Mapper
件数に応じて動的に配列を作るCode
filter / map / 集計 / 比較などの処理をするCode
配列を1件ずつ処理するLoop on Items
単純に複数の値を一定のJSON構造へまとめるだけであれば、Codeを書かずにData Mapperを利用できます。
関連ページ:

ページ番号を作って繰り返し処理する例

APIなどで1ページずつデータを取得する場合、Codeでページ番号の配列を作成できます。
出力:
フロー例:
💡
大量データを取得する場合は、APIごとにページング方法や取得上限が異なります。
この例は「配列を作ってLoopへ渡す」基本例です。大量件数の処理では、APIの仕様・タイムアウト・Sub flowの利用などもあわせて検討してください。

「The items you have selected must be a list.」と表示される場合

このエラーは、Loop on ItemsのItemsに配列ではない値が設定されている場合に発生します。
次の順番で確認してください。
  1. Loopの前のステップをテストする
  1. テスト結果で、繰り返したい値が の配列になっているか確認する
  1. の場合は、オブジェクト全体ではなく を選択する
  1. Codeを修正した場合は、Codeを再テストする
  1. Loop on Itemsで最新のテストデータから配列を選び直す

よくある誤り

配列をItems欄へ文字として直接入力している
Items欄へこの文字列を直接入力するのではなく、CodeやData Mapperの出力として実際の配列を作成し、その配列をデータセレクターから指定してください。
オブジェクト全体を選択している
この場合、Loopへ渡すのは出力全体ではなく、 です。

Codeの配列がデータセレクターに表示されない場合

  1. Codeをテスト実行する
  1. テスト結果に目的の配列が含まれていることを確認する
  1. 後続のLoop on Itemsを開き直す
  1. 最新のテスト結果を選択する
それでも表示されない場合は、データセレクターについて に記載している変数(データ参照)の直接指定を利用できます。
例えばCodeの識別子が で、出力が の場合は次のように指定します。
識別子は対象ピースの「参照をコピー」から確認してください。