SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Automation Anywhere -【ボット構築初級編 vol.4】LOOPコマンドを使ってみよう!

Automation Anywhere
2020.03.03

こんにちは。鈴木です。

前回に引き続き、【ボット構築初級編】としてボット構築の基礎知識や、

コマンドの紹介を連載でお届けいたします。

今回は、第4回目ということで、LOOPコマンドの使い方をご紹介します。

Let's RPA!!


□目次

  1. LOOPコマンドの概要
  2. LOOPコマンドの使い方
    1. 回数を指定するLOOP
    2. List変数の要素を1つずつ処理するLOOP
    3. 条件を指定するLOOP
    4. 読み込んだExcelのデータを1行ずつ処理するLOOP
    5. スクレイピングしたデータを1行ずつ処理するLOOP
    6. Databaseから取得したデータを1行ずつ処理するLOOP
    7. 指定したフォルダ内のファイルを1つずつ処理するLOOP
    8. 指定したフォルダ内のフォルダを1つずつ処理するLOOP
    9. 読み込んだCSV / Textのデータを1行ずつ処理するLOOP
    10. 読み込んだXMLのノードを1つずつ処理するLOOP
    11. 指定したアカウントのEメールを1件ずつ処理するLOOP
    12. 繰り返し処理を抜けたい! or 次のデータを処理したい!
  3. LOOPコマンドに関連するシステム変数
  4. まとめ

※AAE Clientのバージョン:11.3.4.0

1.LOOPコマンドの概要

プログラミングではお馴染みですが、

LOOPコマンドは処理を繰り返すときに使います。

プログラムと同様にRPAでも同じ処理を何度も実行することがありますが、

同じ処理(コマンド)を何度も記述することは効率が良くありません。

処理を記述したら、その処理を何度も繰り返し実行できるととても便利です。

Automation Anywhereではこの繰り返し処理を非常に簡単に使うことができます。

2.LOOPコマンドの使い方

 1.回数を指定するLOOP

 Timesを選択すると、繰り返し処理の回数を指定することができます。

 プログラミングのFor文と同じような使い方ですね。

 下の画像のように固定値を設定することもできますし、変数を指定することもできます。

005_001.png

 2.List変数の要素を1つずつ処理するLOOP

 Listを選択すると、List型の変数を指定して要素を1つずつ参照して処理することができます。

005_002.png

 下図のように実装すると、List型の変数である$my-list-variables$の中身を

 Message Boxで表示させることができます。

005_016.png

 3.条件を指定するLOOP

 指定した条件に合致する間、繰り返し処理をさせることができます。

 プログラミングのWhile文と同じような使い方ですね。

005_003.png

 Conditionを選択すると、条件を指定するダイアログが表示されます。

 条件を指定するダイアログはIF/ELSEコマンドと同じです。

 IF/ELSEコマンドの詳細はこちらを参照してみてください!

 繰り返しの終了時に条件を確認にチェックすると、

 プログラミングのDo While分と同じような使い方ができます。

005_004.png

 4.読み込んだExcelのデータを1行ずつ処理するLOOP

 Each row in an Excel datasetを選択すると、

 Excelコマンドで読み込んだデータを1行ずつ処理することができます。

 データを参照する場合は、システム変数:$Excel Column$を使用します。

 このLOOPコマンドの前にOpen Spreadsheetコマンドと、Get Cellsコマンドで

 Excelのデータを読み込んでおく必要があります。

005_005.png

 5.スクレイピングしたデータを1行ずつ処理するLOOP

 Each row in an Internet Explorer Tableを選択すると、

 Web RecorderのExtract Tableで取得したテーブルデータを1行ずつ処理することができます。

 データを参照する場合は、システム変数:$Table Column$を使用します。

 出力されたCSVファイルを再度読み込む必要がないので便利ですね。

 Web Recorderによるデータスクレイピングの詳細はこちらをご参照ください!

005_006.png

 6.Databaseから取得したデータを1行ずつ処理するLOOP

 Each row in a SQL Query datasetを選択すると、

 Databaseコマンドで読み込んだデータを1行ずつ処理することができます。

 データを参照する場合は、システム変数:$Dataset Column$を使用します。

 このLOOPコマンドの前にConnectコマンドと、SQL Queryコマンドで

 データベースのデータを読み込んでおく必要があります。

005_007.png

 7.指定したフォルダ内のファイルを1つずつ処理するLOOP

 Each file in a folderを選択すると、指定したフォルダ内のファイルを

 1つずつ参照して処理することができます。

 ファイル名を参照する場合は、システム変数:$FileName$を、

 拡張子を参照する場合は、システム変数:$Extention$を、

 ファイルが格納されているフォルダパスを参照する場合は、

 システム変数:$CurrentDirectory$を使用します。

005_008.png

 8.指定したフォルダ内のフォルダを1つずつ処理するLOOP

 Each folder in a folderを選択すると、指定したフォルダ内のフォルダを

 1つずつ参照して処理することができます。

 フォルダ名を参照する場合は、システム変数:$FolderName$を、

 親フォルダのパスを参照する場合は、システム変数:$CurrentDirectory$を使用します。

005_009.png

 9.読み込んだCSV / Textのデータを1行ずつ処理するLOOP

 Each row in a CSV/Text fileを選択すると、

 Read From CSV/Textコマンドで読み込んだデータを1行ずつ処理することができます。

 データを参照する場合は、システム変数:$Filedata Column$を使用します。

 このLOOPコマンドの前にRead From CSV/Textコマンドでデータを読み込んでおく必要があります。

005_010.png

 10.読み込んだXMLのノードを1つずつ処理するLOOP

 Each node in an XML datasetを選択すると、

 XMLコマンドで読み込んだノードを1つずつ処理することができます。

 データを参照する場合は、システム変数:$XML Data Node$を使用します。

 このLOOPコマンドの前にStart XML Sessionコマンド、

 Get Node(s)コマンドでデータを読み込んでおく必要があります。

005_011.png

 11.指定したアカウントのEメールを1件ずつ処理するLOOP

 Each email message on serverを選択すると、指定したアカウントのメールを

 1つずつ参照して処理することができます。

 メールの各種情報は下記のシステム変数から参照できます。

 $Email From$:差出人メールアドレスを返します。
 $Email To$:EメールToアドレスを返します。
 $Email Cc$:電子メールのCcアドレスを返します。
 $Email Subject$:電子メールの件名を返します。
 $Email Message$:電子メールの内容を返します。
 $Email Received Date$:電子メールの受信日を返します。
 $Email Received Time$:電子メールの受信時刻を返します。

005_012.png

メールの設定は下図の通り、Email Automationコマンドと同じです。

005_013.png

 12.繰り返し処理を抜けたい! or 次のデータを処理したい!

 LOOPコマンドで処理を繰り返していると、

 条件によっては処理を飛ばして次のデータに進みたかったり、

 繰り返し処理を中断したかったりする場合があります。

 こういったときは、Continue Loopコマンド、Exit Loopコマンドを使います。

005_019.png

 サンプルを作成してみました。

005_018.png

 Excelのデータを1行ずつ処理していくサンプルですが、

 IF/ELSEコマンドを使って、年齢項目を判定しています。

 30歳よりも大きい場合は処理対象外なので、

 Continue Loopコマンドを使って次のデータに進みます。

 また、0歳よりも小さい場合は不正データの可能性があるので、

 Exit Loopコマンドを使って繰り返し処理を中断します。

3.LOOPコマンドに関連するシステム変数

 コマンドの使い方でもご紹介しましたが、LOOPコマンドを使いこなすには

 システム変数を理解する必要があります。

 変数マネージャータブの「システム変数を表示」から、

 LOOPコマンドに関連するシステム変数を確認してみましょう。

005_014.png

LOOPコマンドに関連する変数についての説明が記載されています。

実際には英語での説明文ですが、簡単に日本語訳してみました。

005_015.png

こちらはメール関連のシステム変数です。

005_017.png

4.まとめ

今回はLOOPコマンドについてご紹介しました。

RPAで良く作成されるデータ入力するボットは

必ずと言っていいほどLOOPコマンドを使って実装されています。

前回のIF/ELSEコマンドも組み合わせてより複雑なボット構築を目指しましょう!

ぜひ使ってみてください!

著者紹介

先端技術推進統括部
RPAビジネス推進部
鈴木 陽介

C#によるシステム開発、POS開発を経てRPAエンジニアに。