UiPath Documentation
maestro-automate
latest
false
Maestro Automate ユーザー ガイド

ループ

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 になったときに、ループを早期に終了する式。これはシーケンシャル ループに適用されます。
ブレーク ハンドルを表示いいえOffAdds 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です。実行トレースでアップストリーム ノードの出力を調べて、配列に項目が含まれていることを確認します。空のコレクションは本文をスキップし、ループの後に続行します。

並列ループでは [条件を破る] がトリガーされません​

[中断時の条件] は各反復処理が順番に完了した後に評価されるため、シーケンシャル ループに適用されます。実行中の状態で中断する必要がある場合は、[ 並列 ] をオフにします。

本体内でコレクションを編集しても、反復処理される内容は変更されません​

コレクションはループの開始時にキャプチャされます。本体内の配列変数を変更しても、反復処理される項目は変更されません。これは仕様です。

次のステップ​

このページは役に立ちましたか?

接続

ヘルプ リソース サポート(opens in new window)

学習する UiPath アカデミー(opens in new window)

質問する UiPath フォーラム(opens in new window)

最新情報を取得