ループ パッケージ

特定の回数、あるいは条件が満たされるまで、アクション のシーケンスを繰り返し実行するには、ループ パッケージを使用します。

ループ パッケージでは、Bot 内で特定の アクション を繰り返し実行できます。たとえば、Microsoft Excel ファイルの各行からデータを読み取る、フォルダー内のすべてのファイルの名前を変更する、各 E メールをメールボックスに保存するといった一連の アクション を繰り返すことができます。また、ループ アクション内で [If] アクション を使用すると、条件を検証し、その結果に基づいて、ループ内の現在の反復をスキップしたり、ループを抜けたりすることも可能です。

条件付きループでは、条件パラメーターが満たされているかどうかに応じて、異なる アクション が実行されます。反復回数が指定されたループの場合、ループは最後の反復で終了し、Bot の次のステップに進みます。

ループ内でアクションのシーケンスを特定の回数繰り返して実行すると、ループ内の終了条件はシーケンスを繰り返すたびに評価されます。

たとえば、10 列あるデータ テーブルをループさせる場合、ループの終了条件に列数の動的な値を入力し、[データ テーブル] > [列を削除] アクションを使用して、ループ本体内のインデックス 0 の列を削除し、Bot を実行します。Bot は操作を実行するたびに列を削除します。これにより、ループの終了条件が操作のたびに評価されるため、反復回数を減らすことができます。

注: Bot は最大 97 のネストされたループで実行することができます。

ループ ラベル

ループ パッケージアクション内の [ラベル] フィールドを使用すると、Bot で使用されているループにラベルを付けることができます。ループにラベルを付けることにより、ネストしたループの特定のループを Break または続行することができます。
注: この機能を使用するには、ループ パッケージ バージョン (3.7.4) を使用して Bot をビルドしていることを確認してください。この機能には、下位互換性がありません。
[ループ]、[続行]、[Break] アクションにラベルを追加するには、[ラベル] フィールドでループのラベルを指定します。
注:
  • 特定の Bot 内の各ループ ラベルが一意であることを確認します。
  • [ラベル] フィールドでは、英数字のみがサポートされます。
次の例では、[ラベル] フィールドを使用して Bot のループを Break または続行する方法を示します。
  • 最初の [ループ] アクションの [ラベル] フィールドで、ラベルに「outerloop」と指定します。
  • 2 番目の [ループ] アクションの [ラベル] フィールドで、ラベルに「innerloop」と指定します。
  • [ループ] > [続行] アクションの [ラベル] フィールドで、続行するループのラベルを選択します。
  • [ループ] > [Break] アクションの [ラベル] フィールドで、Break するループのラベルを選択します。

ループのラベル付けの方法を確認するには、ビデオをクリックしてください。

Bot 内に複数のネストされたループがあり、ネストされたループ内に [ループ] > [続行] および [Break] アクションがあり、ループにラベルを付けていない場合、Bot 実行時に、Bot では、デフォルトで、最も近いループが Break または続行されます。

例:
  • 外側ループと、その外側ループ内にネストされた内側ループがあるとします。
  • その内側ループ内に [ループ] > [続行] および [Break] アクションがあるとします。
これらのループのいずれにもラベルを付けずに Bot を実行すると、Bot では、最も近いループ (内側ループ) が Break または続行されます。

ループ パッケージアクション

以下の ループ アクション を使用できます。

アクション 説明
ループ [ループ] アクションの使用」を参照してください。
続行

[続行] アクション」を参照してください。

If パッケージ」を参照してください。
Break

Break アクション」を参照してください。

If パッケージ」を参照してください。

ループ アクション内の反復子関連の条件

[反復子] オプションを選択して、ループ アクション の一部として アクション セットを繰り返す回数を指定します。

反復子 説明
CSV/TXT の各行に対して 指定した CSV またはテキスト ファイルの各行に対して一連の アクション を繰り返し、現在の行の値をレコード変数に代入します。「[CSV/TXT の各行に対して] 反復子の使用」を参照してください。
データ テーブル の各行に対して 指定したテーブルの各行に対して一連の アクション を繰り返し、現在の行の値をレコード変数に代入します。「[テーブルの各行用] 反復子の使用」を参照してください。
SQL クエリ データセットの各行 指定した SQL クエリ データセットの各行に対して一連の アクション を繰り返し、現在の行の値をレコード変数に代入します。データベース接続を確立するときに使用したセッション名を指定します。
ディクショナリ 内の各キーに対して 指定したディクショナリ変数の各キーに対して一連の アクション を繰り返し、現在のキーの名前を変数に代入します。
注: Bot[ディクショナリ] > [書き込み] アクション を含む [ループ] アクション を実行すると、Bot はディクショナリの元のアイテム数だけを反復します。これには、[書き込み] アクション を使用して挿入されたアイテムは無視されます。
ディクショナリ 内の各値に対して 指定したディクショナリ変数の各値に対して一連のアクションを繰り返し、現在の値を変数に代入します。この変数型はさまざまなサブタイプ (文字列、数値、Boolean など)を格納できるので、アクション を構成するときに変数のクイック作成を行った場合、変数は [任意] のタイプになります。
注: Bot[ディクショナリ] > [書き込み] アクション を含む [ループ] アクション を実行すると、Bot はディクショナリの元のアイテム数だけを反復します。これには、[書き込み] アクション を使用して挿入されたアイテムは無視されます。
メールボックス内の各 E メールに対して 指定したメールボックス内の各 E メールに対して一連の アクション を繰り返します。「[メール ボックス内の各 E メールに対して] 反復子の使用」を参照してください。
ワークシート内の各行 (Excel の基本操作 または Excel の高度な操作) ワークシート内のデータを含む各行に対して一連の アクション を繰り返し、現在の行の値をレコード変数に代入します。Excel の基本操作 または Excel の高度な操作 ワークシートを開くときに使用したセッション名を入力します。アクション を繰り返す対象 (すべての行、指定した行、または指定したセル範囲) を指定します。[この変数に現在の行を代入] リストからレコード変数を選択するか、新しい変数を作成します。「レコード変数」を参照してください。
この反復子は、セル値を文字列データ型として取得します。数値、パーセント、通貨、指数、日付などの Excel セル形式をサポートしています。たとえば、[通貨] 表示形式のセルから値がテーブル変数またはレコード変数に渡された場合、通貨記号は保持されます。
  • 非文字列演算を実行するには、値を変換する必要があります。
  • Excel の高度な操作 では、[ワークシート内の各行] に対してループ反復子を選択すると、セルの表示テキストまたは値のいずれかを読み取る [読み取り] オプションが表示されます。

    たとえば、セルのコンテンツが 70% の場合、[セル値の読み取り] オプションは値を 70 として読み取り、% 形式を無視します。一方、[閲覧可能なテキストの読み取り] オプションは 70% として読み取ります。

    Recommendation: [セル値の読み取り] オプションをセルからの読み取り値として使用して、閲覧可能なテキストの読み取りよりもパフォーマンスを向上させます。

[グローバル セッション] オプションを使用し、Excel の高度な操作 パッケージ による Microsoft Excel のセッションを共有することは、このオプションではできません。

代替ソリューション: [複数のセルを取得] アクション を使用し、データをデータテーブル変数に保存した後で、[データ テーブル] オプションを選択して ループ パッケージ を使用します。

フォルダー内の各ファイル 指定したフォルダー内の各ファイルに対して一連の アクション を繰り返し、次の 2 つのキーが含まれたディクショナリ変数に現在のファイルのプロパティを代入します。name キーはファイル名、extension キーはファイル拡張子を格納しています。

異なる拡張子のファイルを開くには、変数オプションを使用して、フォルダー パス、ファイル名、ファイル拡張子を割り当てます。まず、フォルダー パスの変数 $sFolder$ を作成します。次に、フォルダー パス内のファイルに対して、ファイル名に対応する $name$ と、ファイル拡張子に対応する $extension$ という 2 つの変数を作成します。ファイルを開くには、$sFolder$\$name$.$extension$ のように変数を文字列として組み合わせます。拡張子をさまざまなファイル タイプや開くオプションに対応させるためには、条件付きロジックを追加できます。

フォルダーの各フォルダー 指定したフォルダー内の各フォルダーに対して一連の アクション を繰り返し、現在のフォルダー名を文字列変数に代入します。

[すべてのサブフォルダーを含む] オプションを使用して、隠しフォルダーを含むフォルダー内の各サブフォルダーを再帰的に反復処理します。

リストの各項目に対して 指定したリスト内の各項目に対して一連の アクション を繰り返し、現在の項目を変数に代入します。アクション をリスト内のすべての項目で繰り返すか、リスト内の一定範囲の項目でのみ繰り返すかを指定します。この変数型はさまざまなサブタイプ (文字列、数値、Boolean など)を格納できるので、アクション を構成するときに変数のクイック作成を行った場合、変数は [任意] のタイプになります。
注: リスト内のインデックスは 0 から始まります。たとえば、リストの 3 番目の位置から 6 番目の位置までの項目にアクションを繰り返すには、該当するフィールドに「2」と「5」を指定します。
n 回 指定した回数だけコンテナ内で アクション を繰り返します。反復回数は、数値変数に代入することができます。
レコード内の各値 指定したレコードの各値に アクション セットを繰り返し、変数に現在の値を割り当てます。この変数型はさまざまなサブタイプ (文字列、数値、Boolean など)を格納できるので、アクション を構成するときに変数のクイック作成を行った場合、変数は [任意] のタイプになります。
カレンダーの各会議 指定したカレンダー内の各ミーティングに対して一連の アクション を繰り返すには、このオプションを使用します。「Microsoft 365 Calendar アクションをループ内で使用する」を参照してください。
ワークシート内の各行 (Microsoft 365 Excel) ワークシート内でデータを含む各行に対して一連の アクション を繰り返します。
  • ワークシートを開くときに使用したセッション名を入力します。
  • アクション を繰り返す対象 (すべての行または指定した行) を指定します。
  • 現在の行の値をレコード変数に代入できます。
XML Dataset の各ノードに対して XML Dataset 内の各ノードに対して一連の アクション を繰り返し、現在のノードを文字列変数に代入します。XML ファイルを開くときに使用したセッション名を入力します。

ループ アクション内の While 関連の条件

1 つの ループ アクション 内に複数の関連条件を設定できます。
  1. [条件を追加] をクリックします。
  2. 以下のいずれかのオプションを選択します。
    • And: アクション を実行するには、両方の条件を満たす必要があります。
    • Or: アクション を実行するには、どちらか一方の条件を満たす必要があります。
  3. ドロップダウン リストから条件を選択します。
以下の条件を使用するには、[While] オプションを選択します。
While 説明
アプリケーション アプリケーションが実行中かどうかに基づいてアクションを実行するには、[アプリケーションは実行中です] または [アプリケーションは実行されていません] の条件を使用します。

アプリケーション パスを入力するか、変数を使用してパスを指定し、条件が真になるまで待機する時間 (秒) を指定します。

注: [アプリケーションは実行中です] および [アプリケーションは実行されていません] の条件は、Internet Explorer Bot の場合は適用できません。それは、[Microsoft Edge] が [IE モード] で起動されている場合、対応するプロセス iexplore.exe が背後で実行されているからです。
Boolean Boolean 変数の値に基づいて アクション を実行するには、この条件を使用します。この条件を使用して、2 つの Boolean 変数の値を比較するか、1 つの Boolean 変数と選択した Boolean 値を比較します。
データ テーブル 指定したテーブルに値が含まれているかどうかに基づいてアクションを実行するには、[データ テーブルは空です] 条件を使用します。

列または行の数の値が [等しい] かどうか、[より大きい] かどうか、または [より小さい] かどうかに基づいてアクションを実行するには、[行数] および [列数] の条件を使用します。

日時 ターゲットの日時変数の値に比べてソース日時変数の値が [等しい] か [等しくない] か、[より大きい] か [等しい] か、または [より小さい] か [等しい] かに基づいてアクションを実行するには、[日時変数] 条件を使用します。
ディクショナリ 選択したディクショナリ変数に指定したキーが含まれているかどうかに基づいて一連の アクション を繰り返すには、この条件を使用します。
注: キーの比較では大文字と小文字が区別されます。
ファイル 以下の条件を使用して、アクションを実行します。
  • [ファイルの日付]

    この条件は、ファイルを作成または編集した日時を確認するために使用します。[日付]、[次の期間内に]、[の間]、または [指定日より前の日時] オプションを使用して、日付範囲を指定します。[日付] オプションを選択する場合は、ファイルの作成または変更が行われたかどうかを確認する日付を指定します。[過去の日付範囲] オプションでは、日数または時間 (時間、分、秒) を指定します。この条件が真になるまで待機する時間 (秒) を入力します。

  • [ファイルが存在する] と [ファイルが存在しない]

    ファイルが存在するかどうかに基づいてアクションを実行するには、これらの条件を使用します。たとえば、データファイルが存在する場合は、ファイル形式を指定してデータベースにアップロードするなどの操作が可能です。

  • [ファイル拡張子]

    この条件は、選択されたファイルの拡張子をチェックし、その結果に基づいてアクションを実行するために使用します。[ファイル パス] フィールドを使用して、ファイルを選択します。

  • [ファイル サイズ]

    この条件は、指定したサイズと比べて、ファイル サイズが大きいか、小さいか、同じかを確認します。

    この条件が真になるまで待機する時間 (秒) を入力します。

フォルダー が存在するかどうか フォルダーが存在するかどうかに基づいて一連の アクション を繰り返すには、この条件を使用します。
画像認識 これらの条件を使用して以下を確認します。
  • [画像ファイル] が [画像ファイル] で見つかるかどうか。
  • [画像ファイル] が [ウィンドウ] で見つかるかどうか。
  • [ウィンドウ] が [画像ファイル] で見つかるかどうか。
  • [ウィンドウ] が [ウィンドウ] で見つかるかどうか。
[ウィンドウ] 条件では、[ウィンドウのサイズ変更] オプションを使用してウィンドウの寸法を指定できます。このオプションによって、より信頼性の高い Bot を実現できます。これによってウィンドウのサイズは、タスクが記録された寸法に変更されるため、Bot におけるターゲット オブジェクトの識別能力が高まります。
注: このオプションは、サイズ変更可能なウィンドウに対してのみ使用できます。これは [デスクトップ] または [タスクバー] オプションでは使用できません。

[ウィンドウ] の条件では、[プレビュー] オプションを使用して、キャプチャされた特定のオカレンスを選択し、画像を基準にしてクリック位置を設定できます。

JavaScript 指定した JavaScript のステータスに基づいてアクションを実行するには、[スクリプトが正常に実行されました] または [スクリプトが正常に実行されませんでした] の条件を使用します。スクリプトが含まれているファイルを選択し、オプションでリスト変数を選択してパラメーターを指定します。
レガシー オートメーション [レガシー オートメーション] 条件は、移行した BotAutomation 360 でシームレスに実行することを確認するためだけに使用します。これらの条件を使用して新しい Bot を開発することは推奨されません。以下を検証するには、以下の条件を使用します。
  • [Web コントロール] が存在するかどうか。
  • [ウィンドウ コントロール] が存在するかどうか。
  • [ウィンドウ コントロール] がアクティブかどうか。
  • [スクリプト] が成功したかどうか。
  • [子ウィンドウ] が存在するかどうか。

[ウィンドウ コントロール] 条件では、[ウィンドウのサイズ変更] オプションを使用してウィンドウの寸法を指定できます。このオプションによって、より信頼性の高い Bot を実現できます。これによってウィンドウのサイズは、タスクが記録された寸法に変更されるため、Bot におけるターゲット オブジェクトの識別能力が高まります。

リスト 指定したリスト変数に特定の値が含まれているかどうかに基づいてアクションを実行するには、[List 変数] 条件を使用します。値には [数値]、[文字列]、または [Boolean] データ タイプを指定できます。
数字 指定した数値変数が特定の値と [等しい] か [等しくない] か、特定の値 [より大きい] か、[等しい] か、または特定の値 [より小さい] か、[等しい] かに基づいてアクションを実行するには、[数値変数] 条件を使用します。
Ping マシンやサーバーが実行中かどうかを確認し、その結果に基づいてアクションを実行するには、[Ping が成功] または [Ping が失敗] の条件を使用します。条件が真になるまで待機する時間 (秒) を入力します。
レコーダー
  • ウィンドウ内のオブジェクトを検出するには、[オブジェクトが存在します] 条件を使用します。オブジェクトをキャプチャするウィンドウまたは変数を選択します。
  • [オブジェクトが存在しない] 条件を使用して、ウィンドウ内の特定のオブジェクトが存在するかどうかを確認し、その結果に基づいてアクションを実行します。たとえば、[オブジェクトが存在しない] 条件を [ループ] > [While] 条件内で使用し、ビジネス アプリケーション上のオブジェクトが読み込まれるまで、Bot が次のアクションを実行しないようにします。
  • [システム タイムアウトの設定] フィールドから、[基本] または [詳細] を選択します。
    • 基本: [システム レスポンスを待機 (秒数)] フィールドで、オブジェクト コントロールをアプリケーション ウィンドウに表示するまで Bot が待機する必要がある秒数を指定します。この待機時間には、ページのロードとオブジェクト検索の両方の待機時間が含まれます。

      [テキストを設定] アクションを使ってテキスト フィールドにキーボード操作を入力する際には、遅延時間を設定することをお勧めします。

      注: アプリケーション ウィンドウにコントロールが表示されるまで Bot を待機させるタイムアウト値を指定します。このタイムアウト値は、コントロールが表示されるウィンドウが存在する場合にのみ適用されます。レコーダーは、最初にアプリケーション ウィンドウを検索し、次にウィンドウの中にあるオブジェクトを検索します。ウィンドウの検索時間は、デフォルトで 30 秒です。このため、待ち時間を 5 秒に指定しても、ウィンドウが存在しない場合は、デフォルトで 30 秒間待機します。

      まず、[If] > [ウィンドウが存在する] 条件を使用し、待機時間を 0 秒に指定し、アプリケーション ウィンドウが存在することを確認することをお勧めします。ウィンドウが存在する場合は、レコーダーを使用し、待機時間を 5 秒に指定し、Bot を実行してオブジェクトを検出します。

    • 詳細: このオプションは、株式の Web サイトなど、常に最新のデータをロードして更新している Web サイトを自動化するために使用します。これらの Web サイトは、技術的に画面に完全にはロードされません。このような場合、Bot は Web ページが完全にロードされるのを待つ必要がなく、一定時間後に Web ページの自動化を直接進めることができます。

      [ブラウザ レスポンスを待機 (秒数)] フィールドで、Bot がブラウザのロードを待機する必要がある秒数を指定します。次のいずれかのオプションを選択します。

      • Bot を停止し、エラー メッセージを表示する: 指定したタイムアウト時間内に Web ページが完全にロードされなかった場合は、このオプションを選択して Bot を停止し、エラー メッセージを表示します。
      • スキップしてオブジェクトに進む: このオプションを選択すると、Web ページが完全にロードされていない場合でも、オブジェクトに直接進み、キャプチャします。

      [オブジェクト レスポンスを待機 (秒数)] フィールドで、オブジェクト コントロールをアプリケーション ウィンドウに表示するまで Bot が待機する必要がある秒数を指定します。

注: [オブジェクトが存在します] と [オブジェクトが存在しません] というレコーダーの条件は、Internet Explorer モードの Chromium ベースの Microsoft Edge に対応しています。
サービス サービスが実行されているかどうかに基づいてアクションを実行するには、[サービス実行中] または [サービス非実行中] 条件を使用します。[サービス リスト] を選択して、使用可能なサービスのリストからサービスを選択します。
文字列 指定したソース文字列の値がターゲット値と [等しい] か [等しくない] か、ターゲット値を [含む] か [含まない] かに基づいてアクションを実行するには、[文字列変数] 条件を使用します。

[大文字と小文字を区別する] オプションを指定すると、2 つの文字列の大文字と小文字が一致する場合にのみアクションを実行できます。

Microsoft アプリケーションからテキストを抽出する場合、抽出されたテキストには、改行を示す /r/n 特殊文字が含まれます。テキストを比較するときに /r 特殊文字を無視する場合は、[キャリッジ リターンを無視] オプションを選択します。

文字列が空かどうかに基づく条件を作成するには、[等しい] 演算子を使用してソース値と空のターゲット フィールドを比較します。

条件付きステートメントの使用例」を参照してください。

タスク Bot 指定した タスク Bot のステータスに基づいてアクションを実行するには、[タスクが正常に完了しました] または [タスクが正常に完了しませんでした] の条件を使用します。
VBScript 指定した Visual Basic スクリプトのステータスに基づいてアクションを実行するには、[スクリプトが正常に実行されました] または [スクリプトが正常に実行されませんでした] の条件を使用します。スクリプトが含まれているファイルを選択し、オプションで変数を選択してパラメーターを指定します。
ウィンドウ [ウィンドウ タイトル] を入力するか変数を使用して、特定のアプリケーション ウィンドウが開いているかどうかを確認するには、[ウィンドウが存在する] または [ウィンドウが存在しない] の条件を使用します。条件が真になるまで待機する時間 (秒) を入力します。これらの条件は、ウィンドウのタイトルが変わらない場合に、特定のウィンドウが開いているかどうかを確認し、その出力に基づいてさらにアクションを実行するために使用されます。

[ウィンドウが存在する] 条件では、同じウィンドウ変数を使用して、キャッシュから特定のウィンドウを検索します。たとえば、Yahoo India の Web ページを開き、その Web ページの [News] オプションで [クリック] アクションを実行すると、そのアクションにより、ウィンドウのタイトルを変更する別のページに移動されます。このときに [ウィンドウが存在する] 条件でウィンドウが存在するかどうかを検証すると、Bot はキャッシュから Yahoo India の Web ページをフェッチしてアクションを実行します。タイトルが変わっただけで、ウィンドウは同じだからです。ウィンドウ変数の動作の詳細については、「自分で作成した変数 (ユーザー定義)」を参照してください。

同じタイトルのウィンドウが存在するか、またはウィンドウのタイトルが変更されたかどうかを確認するには、[同じタイトルのウィンドウは存在しません] または [同じタイトルのウィンドウが存在します] 条件を使用します。条件が真であるかどうかを検証し続ける時間 (秒) を入力します。これらの条件は、ウィンドウ タイトルが動的である場合に使用されます。たとえば、Google アカウントの Web ページを開き、ユーザー名とパスワードを入力してアカウントにログインすると、ウィンドウ タイトルが変わります。次のアクションとして新しいメールを作成する場合、次のアクションを実行する前に、これらの条件を使用して、同じタイトルのウィンドウが存在するか、タイトルが変更されているかを確認することができます。

グループ条件

一連のアクションを実行する前に Bot で一度に複数の条件をチェックしたい場合、[グループを追加] オプションを使用して、複数の Boolean 条件を追加するか、グループ内で [And] や [Or] オプションを使用して複数の条件を組み合わせます。

また、グループ内に追加でグループを作成することもできます。