UiPath

【UiPath】繰り返し(ループ)処理を行うアクティビティについて

UiPath Studioの開発では、繰り返しの処理を行うことが多いです。

しかし、繰り返し処理を行うアクティビティは複数あり、どのアクティビティを使用するのが適切か判断しづらいです。

この記事では、繰り返し処理を行えるアクティビティである「指定回数を繰り返し 、繰り返し (コレクションの各要素)、繰り返し (各行)、繰り返し(前判定)、繰り返し(後判定)、フロー条件分岐 」の解説と適切な使い方について、紹介します。

繰り返し処理アクティビティの利用用途と対象データ

繰り返し回数が決まっている場合は「指定回数を繰り返し (Repeat Number Of Times)
」を利用します。

対象データをすべて読み込みたい場合は「繰り返し (コレクションの各要素) (For Each)」か「繰り返し (各行) (For Each Row)」を使います。

指定条件を満たす場合のみ繰り返したい場合は、「繰り返し(前判定)(While)」、「繰り返し(後判定)(do While)」、「フロー条件分岐 (Flow Decision)」を利用します。

表にまとめると以下の通りです。

アクティビティ名 利用用途 繰り返し対象のデータ
指定回数を繰り返し (Repeat Number Of Times) 繰り返し回数が決まっている時に利用する 任意
繰り返し (コレクションの各要素) (For Each) ArrayやListなどの配列データをすべて読み込みたい時に利用する 繰り返し処理に対応する変数(IEnumerable 変数)
繰り返し (各行) (For Each Row) データテーブルのデータをすべて読み込みたい時に利用する DataTable 変数
繰り返し(前判定)(While) 指定条件を満たすか判定した後、指定条件を満たす限り、繰り返す 任意
繰り返し(後判定)(do While) 一度繰り返し内の処理を実行した後、指定条件を満たす限り、繰り返す 任意
フロー条件分岐 (Flow Decision) フローチャート上で繰り返しを行いたい 任意

 

指定回数を繰り返し (Repeat Number Of Times)

指定回数を繰り返し (Repeat Number Of Times)は、繰り返し回数が決まっている時に利用します

アクティビティは、ワークフロー>制御 にあります。

 

指定回数を繰り返しの設定項目

設定場所 設定項目 設定内容
アクティビティの本体
繰り返し 現在の反復処理を参照するときに使用する名前を入力します。既定値は CurrentItem です。
繰り返し回数 繰り返し回数を指定します。
[プロパティ] パネル内 共通 表示名 デザイナー パネルに表示されるアクティビティの名前です。
入力 繰り返し回数 繰り返し回数を指定します。
その他 プライベート 選択すると、アクティビティで使用したデータが Studio のログに記録されなくなります。

 

サンプルワークフロー
3回繰り返して、list1内のデータをログに出力する。

・各アクティビティの説明

  • 「List<String>型 list1へ代入」で、list1に「New List(of String) From{“りんご”, “オレンジ”,”ぶどう”}」を代入しています。
  • 「指定回数を繰り返し」の「繰り返し回数」を3に設定することで、実行内を3回実行します。
  • 「指定回数を繰り返し」の「CurrentItem」は、実行回数が代入されます。
  • 「list1の中身 メッセージをログ」は、listの配列が0から始まるので、()内を「実行回数-1」としています。

 

・コピペ用のコード

lits1 = "New List(of String) From{"りんご", "オレンジ","ぶどう"}"
CurrentItem.ToString+"回目"
list1(CurrentItem-1)
"----------"

 

・実行結果

 

 

繰り返し (コレクションの各要素) (For Each)

繰り返し (コレクションの各要素) (For Each)は、ArrayやListなどの配列データをすべて読み込みたい時に利用します。

アクティビティは、ワークフロー>制御 にあります。

繰り返し (コレクションの各要素) の設定項目

設定場所 設定項目 設定内容
アクティビティの本体
繰り返し 現在の反復処理を参照するときに使用する名前を入力します。既定値は itemです。
次のコレクションの各要素 繰り返し処理を行う値を持つ変数です。
[プロパティ] パネル内 共通 表示名 アクティビティの表示名です。
その他 プライベート オンにした場合、変数および引数の値が Verbose レベルでログに出力されなくなります。
TypeArgument アクティビティで使用する変数型を選択するためのドロップダウン リストです。
コレクション値 繰り返し処理を行う値を持つ変数です。
出力 現在のインデックス 使用中のコレクションで繰り返し処理される要素を指定するゼロベースのインデックスです。

 

サンプルワークフロー
list1内のデータをすべて表示する。

・繰り返し (コレクションの各要素)のプロパティ

・各アクティビティの説明

  • 「List<String>型 list1へ代入」で、list1に「New List(of String) From{“りんご”, “オレンジ”,”ぶどう”}」を代入しています。
  • 「繰り返し (コレクションの各要素)」の「item」は、list1から取り出したデータが順番に代入されます。
  • 「繰り返し (コレクションの各要素)」のプロパティの出力にある「現在のインデックス」へint32型 intCountを設定して、「現在のインデックス メッセージをログ」で何回目の繰り返しかを出力しています。
ペンギンさん
ペンギンさん
※現在のインデックスの繰り返し回数は、0からカウントされるので注意してくださいね。

 

・コピペ用のコード

lits1 = "New List(of String) From{"りんご", "オレンジ","ぶどう"}"
"現在のインデックス:"+intCount.ToString
item
"----------"

 

・実行結果

 

繰り返し (各行) (For Each Row)

繰り返し (コレクションの各要素) (For Each)は、データテーブルのデータを読み込みたい時に利用します。

アクティビティは、ワークフロー>制御 にあります。

繰り返し (コレクションの各要素)の設定項目

設定場所 設定項目 設定内容
アクティビティの本体
繰り返し 現在の反復処理を参照するときに使用する名前を入力します。既定値は rowです。
次のコレクションの各要素 各行について 1 回ずつアクションを実行する対象の DataTable 変数です。
[プロパティ] パネル内 その他 プライベート オンにした場合、変数および引数の値が Verbose レベルでログに出力されなくなります。
入力 データテーブル 各行について 1 回ずつアクションを実行する対象の DataTable 変数です。
共通 表示名 アクティビティの表示名です。
出力 現在のインデックス 現在のコレクションにある要素のうち、繰り返し処理する要素を指定するインデックスです。

 

サンプルワークフロー
テストの点数.csvのデータをデータテーブルdtに読み込み、dt内の各行を繰り返してログに出力する。

・”data\テストの点数.csv”内のデータ

・繰り返し (各行)のプロパティ

・各アクティビティの説明

  • 「CSV を読み込み」で、”data\テストの点数.csv”をヘッダー付きで読み込み、データテーブルdtへ代入しています。
  • 「繰り返し (コレクションの各要素)」の「row」は、dtから取り出した行データが順番に代入されます。
  • 「row」は行を表しているので、(0)や(1)で列を指定して、読み込んだデータを表示しています。
  • 「繰り返し (コレクションの各要素)」のプロパティの出力にある「現在のインデックス」へint32型 intCountを設定して、「現在のインデックス メッセージをログ」で何回目の繰り返しかを出力しています。
ペンギンさん
ペンギンさん
※繰り返し (コレクションの各要素)と同様に、現在のインデックスの繰り返し回数は、0からカウントされるので注意してくださいね。

 

・コピペ用のコード

"現在のインデックス:"+intCount.ToString
"名前:" + row(0).ToString
"テストの点数:" + row(1).ToString
"----------"

 

・実行結果

 

繰り返し(前判定)(While)

繰り返し(前判定)(While)は、指定条件を満たすか判定した後、指定条件を満たす限り、処理を繰り返した場合に使用します。

アクティビティは、ワークフロー>制御 にあります。

繰り返し(前判定)の設定項目

設定場所 設定項目 設定内容
アクティビティの本体
条件 このフィールドで指定された条件がTrueである限り、アクティビティの本体のアクティビティが実行されます。
[プロパティ] パネル内 その他 プライベート オンにした場合、変数および引数の値が Verbose レベルでログに出力されなくなります。
入力 条件 このフィールドで指定された条件がTrueである限り、アクティビティの本体のアクティビティが実行されます。
共通 表示名 アクティビティの表示名です。

引用元:While

 

サンプルワークフロー1
カウント数が3未満の間、list内のカウント数のデータを表示する。

・各アクティビティの説明

  • 「List<String>型 list1へ代入」で、list1に「New List(of String) From{“りんご”, “オレンジ”,”ぶどう”}」を代入しています。
  • 「繰り返し(前判定)」の「条件」にintCount<3に設定することで、intCountが3未満の間、本文が繰り返し実行されます。条件が満たされない場合、一度も実行されません。
  • 「繰り返し(前判定)」の本文内の「intCountのカウントアップ 代入」で、繰り返し処理のたびにintCountを1づつ足しています。

 

・コピペ用のコード

lits1 = New List(of String) From{"りんご", "オレンジ","ぶどう"}
"現在のインデックス:"+intCount.ToString
intCount = 0
"繰り返しカウント:"+intCount.ToString
"list1内の値:"+list1(intCount).Tostring
"----------"
intCount = intCount + 1

・実行結果

 

サンプルワークフロー2
テストの点数.csvのデータをデータテーブルdtに読み込み、カウント数が3未満の間、dt内カウント数の各行のデータを繰り返してログに出力する。

 

・各アクティビティの説明

  • 「CSV を読み込み」で、”data\テストの点数.csv”をヘッダー付きで読み込み、データテーブルdtへ代入しています。
  • 「繰り返し(前判定)」の「条件」にintCount<3に設定することで、intCountが3未満の間、本文が繰り返し実行されます。条件が満たされない場合、一度も実行されません。
  • 「繰り返し(前判定)」の本文内の「名前 メッセージをログ」の dt(intCount)(0)は、データテーブルdtのintCount行の0列目を表しています。
  • 「繰り返し(前判定)」の本文内の「intCountのカウントアップ 代入」で、繰り返し処理のたびにintCountを1つずつ足しています。

 

・コピペ用のコード

intCount = 0
"繰り返しカウント:"+intCount.ToString
"名前:" + dt(IntCount)(0).ToString
"テストの点数:" + dt(intCount)(1).ToString
"----------"
intCount = intCount + 1

 

・実行結果

 

繰り返し(後判定)(do While)

繰り返し(後判定)(do While)は、一度繰り返し内の処理を実行した後、指定条件を満たす限り繰り返したい場合に使用します。

アクティビティは、ワークフロー>制御 にあります。

繰り返し(後判定)の設定項目

設定場所 設定項目 設定内容
アクティビティの本体
条件 このフィールドで指定された条件がTrueである限り、アクティビティの本体のアクティビティが実行されます。
[プロパティ] パネル内 その他 プライベート オンにした場合、変数および引数の値が Verbose レベルでログに出力されなくなります。
入力 条件 このフィールドで指定された条件がTrueである限り、アクティビティの本体のアクティビティが実行されます。
共通 表示名 アクティビティの表示名です。

引用元:Do While

 

サンプルワークフロー
カウント数が3未満の間、list内のカウント数のデータを表示する。

・各アクティビティの説明

  • 「List<String>型 list1へ代入」で、list1に「New List(of String) From{“りんご”, “オレンジ”,”ぶどう”}」を代入しています。
  • 「繰り返し(後判定)」の「条件」にintCount<3に設定することで、intCountが3未満の間、本文が繰り返し実行されます。条件を満たさない場合でも、一度は実行されます。
  • 「繰り返し(後判定)」の本文内の「intCountのカウントアップ 代入」で、繰り返し処理のたびにintCountを1つずつ足しています。

 

・コピペ用のコード

lits1 = New List(of String) From{"りんご", "オレンジ","ぶどう"}
"現在のインデックス:"+intCount.ToString
intCount = 0
"繰り返しカウント:"+intCount.ToString
"list1内の値:"+list1(intCount).Tostring
"----------"
intCount = intCount + 1

 

・実行結果

 

フロー条件分岐 (Flow Decision)

フロー条件分岐 (Flow Decision)のTrueかFalseのどちらかを前の処理へ戻すことで、繰り返し処理を行います。

アクティビティは、ワークフロー>フローチャート にあります。

サンプルワークフロー
カウント数が3未満の間、list内のカウント数のデータを表示する。

・アクティビティ詳細

・各アクティビティの説明

  • 「List<String>型 list1へ代入」で、list1に「New List(of String) From{“りんご”, “オレンジ”,”ぶどう”}」を代入しています。
  • 「フロー条件分岐」をintCount<3に設定することで、intCountが3未満の間、左側のTrue条件が繰り返し実行されます。
  • 「フロー条件分岐」がintCount=3に達したら、右側のFalse条件が実行されて終了します。

 

・コピペ用のコード

lits1 = New List(of String) From{"りんご", "オレンジ","ぶどう"}
intCount = 0
"処理回数:" + intCount.ToString
"list1内の値:"+list1(intCount).Tostring
"----------"
intCount = intCount + 1
"True 処理終了"

 

・実行結果

まとめ

  • 繰り返し回数が決まっている場合は「指定回数を繰り返し (Repeat Number Of Times)」を利用します。
  • 対象データをすべて読み込みたい場合は「繰り返し (コレクションの各要素) (For Each)」か「繰り返し (各行) (For Each Row)」を使います。
  • 指定条件を満たす場合のみ繰り返したい場合は、「繰り返し(前判定)(While)」、「繰り返し(後判定)(do While)」、「フロー条件分岐 (Flow Decision)」を利用します。

 

最後に関連記事を紹介します。

↓UiPath Studioのアクティビティの使い方、開発時のチップスについては、以下記事にまとめています。

【UiPath】プロセス作成方法やアクティビティの使い方のまとめ記事UiPath Studioでのプロセス作成方法やアクティビティの使い方を体系的に学びたい方向けに、UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを分かりやすく説明します。...

https://penrako.com/uipathstudiosummary/(別ウインドウ)

 

↓使用頻度の高いアクティビティについて、アクティビティで出来ることと、アクティビティガイドへのリンクを一覧で解説した記事です。

https://penrako.com/activitylist/

https://penrako.com/activitylist/(別ウインドウ)