ループ内での制御処理のBreakとContinueについて紹介します。
簡単に言うと、
Breakはループをそこで終了し、ループを完全に抜ける処理です。(ループの次にいく)
Continueは対象のデータの処理は終了し、次のデータへと移る処理です。(ループの最初に戻る)
まず、基本のループ処理を作成します。
詳細はこちらをご参照ください。(【UiPath】For Each Rowの使い方)
最終的には結果列にワークフローで「完了」という文字をいれていくイメージです。
UiPathでReadRangeを使って今のExcelの内容をDataTableに読み込みます。
次にFor Each Rowで先ほど作ったDataTableでループさせます。
一旦制御なしで、全データに「完了」をいれるようにAssgin(row(“結果”)=”完了”)をFor Each Rowの中にセットします。
これで実行してみると、Excelは以下のような結果となります。
まずBreakをいれてみたいと思います。
Breakを通った時点でループ処理は終了となるため、基本的にIfと一緒に使います。
ということで、「チェック」が「OK」かどうかのIfをFor Each Rowの中に入れてみます。
Condition:row(“チェック”).ToString = “OK”
このIfだと、「チェック」が「OK」の場合左側のThenの道を通り、「チェック」が「OK」以外の場合Elseの道を通ります。
今回は「OK」の場合は先ほどのように「完了」をいれ、「OK」以外の場合はBreakさせてみます。
Breakは設定などは特になく入れるだけで使えます。(Activities>Available>Workflow>Control Flow>Break)
これで実行してみるとExcelは以下のような結果となります。
「チェック」が「NG」というデータにきたときに、そこで処理が終わったことがわかるかと思います。
続いて、Continueをいれてみます。
先ほどBreakをいれていたところを、Continueに変えます。(Activities>Available>Workflow>Control Flow>Continue)
Breakと違い、「NG」のデータのあとも処理が続いていることがわかるかと思います。
ちなみに、今回のサンプルではContinueいれてもいれなくても実は結果が変わらないのですし、実際Ifを駆使すれば必要はないのですが、Ifが増えると大変見づらいのでContinueを使いこなせるとすっきりしてよいかと思います。
以上、ループ内での制御処理のBreakとContinueの使い方でした。
なお、Continueアクティビティは古いバージョンだと無い可能性がありますので、ご注意ください。