- はじめに
- 開発
- デプロイして実行する
- 例
- 参照
ループ
Configure the Loop node, build the loop body, and read its output, with examples and fixes for common issues.
機能
コレクションを反復処理し、項目ごとにループ本体内のノードを 1 回ずつ実行します。
ループを使用すべき状況
ループは、API によって返されるレコードのリスト、ファイルのリスト、ID のリストなど、処理する項目のコレクションに適合します。ループは項目ごとに 1 回実行され、コレクションがなくなると停止します。
コレクションを使い果たす前に終了するには、[ 条件時を中断 ] または [繰り返しハンドル] を使用します。どちらも以下で説明します。
構成のリファレンス
| フィールド | Required | 既定 (Default) | 説明 |
|---|---|---|---|
| コレクション | はい | なし | 反復処理する配列です。配列に解決される式を入力します (例: $vars.listCustomers1.output)。 |
| 並列 (Parallel) | いいえ | Off | すべての反復処理を 1 つずつではなく同時に実行します。オフの場合、ループは順番に実行され、各反復処理が完了するまで待ってから次の反復処理を開始します。 |
| 条件一致時に中断 | いいえ | なし | 反復処理の完了後にループが true になったときに、ループを早期に終了する式。これはシーケンシャル ループに適用されます。 |
| ブレーク ハンドルを表示 | いいえ | Off | Adds a break handle to the loop so nodes inside the body can exit the loop early. Connect a node's output to the break handle to stop iterating from inside the body. Available in sequential and parallel loops. |
順次反復処理では順序が維持されます。これは、各反復処理の完了後に条件がチェックされるため、[ 条件で中断 ] が機能するために必要です。並列反復処理は、保証された順序で実行されません。
キャンバス上のループ
ループがキャンバスにコンテナーとして表示されます。右上のバッジにモード ( シーケンシャル または 並列) が表示され、プロパティ パネルの [ 並列 ] トグルを使用してモードを切り替えます。コンテナー内では、左側の 開始 ハンドルで各反復処理が開始され、右側の 続行 ハンドルで反復処理が終了します。コンテナー内の [+ ] ボタンは本体にノードを追加し、右端の [+ ] ボタンはループの後に実行されるノードを追加します。続行ハンドルは複数のノードからのエッジを受け入れるため、本体を通る各パスはそのノードで終了できます。[ブレーク ハンドルを表示] がオンの場合、ブレーク ハンドルが表示されます。
ループ ノードはエラー処理をサポートしているため、「 エラー 処理」で説明しているように、この [ エラー処理] タブに エラー ハンドルを追加できます。
ループ本体
ループ境界の内側に配置されたノードが本体を形成します。本体内のノードは、現在の項目と反復処理、およびループ外のスコープ内の任意の変数を読み取ることができます。
現在の項目と反復処理
本体内で、以下の式でループの進行状況を参照します。
$vars.<loopName>.currentItemは、現在の反復処理の項目です。ドット表記を使用してフィールドにアクセスします (例:$vars.loop1.currentItem.id)。$vars.<loopName>.currentIterationは、1から始まる現在の反復処理番号です。$vars.<loopName>.collectionは、反復処理される完全な配列です。
これらは、ループ本体内でのみ使用できます。
出力
すべての反復処理の完了後、ループの集計結果は $vars.<loopName>.outputで表示されます。その後、ループの後にノードで実行が続行されます。
currentItem と currentIteration には、ループ本体の外ではアクセスできません。
例
例 1: 各項目に対して API を呼び出す
ループは を反復処理 $vars.listCustomers1.output。ループ本体には、URL が の HTTP 要求ノードが含まれます。
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
例 2: 反復処理にまたがって結果の配列を構築する
ループ本体内のスクリプト ノードは、各項目の値を返します。ループは、各反復処理の結果を に収集します$vars.loop1.output
return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };
ループの後、 $vars.loop1.output はそれらの結果の配列です。
例 3: 一致が見つかったら早めに停止する
ループ本体内の Decision ノードが現在の項目をチェックします。ブ レーク ハンドルの表示 が有効化されている場合、判断の一致する分岐はループのブレーク ハンドルに接続され、一致が見つかったらすぐに反復処理を停止します。
一般的な問題
ループ本体は実行されません。
コレクションが空であるか、 undefinedです。実行トレースでアップストリーム ノードの出力を調べて、配列に項目が含まれていることを確認します。空のコレクションは本文をスキップし、ループの後に続行します。
並列ループでは [条件を破る] がトリガーされません
[中断時の条件] は各反復処理が順番に完了した後に評価されるため、シーケンシャル ループに適用されます。実行中の状態で中断する必要がある場合は、[ 並列 ] をオフにします。
本体内でコレクションを編集しても、反復処理される内容は変更されません
コレクションはループの開始時にキャプチャされます。本体内の配列変数を変更しても、反復処理される項目は変更されません。これは仕様です。
次のステップ
- 制御フロー: 分岐、繰り返し、および再結合するノード。
- 判断: 条件に基づいて分岐する。
- 変数とデータ フロー: ノードがデータを渡す方法
- コミュニティ: UiPath フォーラムで質問したり、他のビルダーとワークフローを共有したりできます。