こんにちは。鈴木です。
前回に引き続き、【ボット構築初級編】としてボット構築の基礎知識や、
コマンドの紹介を連載でお届けいたします。
今回は、第4回目ということで、LOOPコマンドの使い方をご紹介します。
Let's RPA!!
□目次
- LOOPコマンドの概要
- LOOPコマンドの使い方
- 回数を指定するLOOP
- List変数の要素を1つずつ処理するLOOP
- 条件を指定するLOOP
- 読み込んだExcelのデータを1行ずつ処理するLOOP
- スクレイピングしたデータを1行ずつ処理するLOOP
- Databaseから取得したデータを1行ずつ処理するLOOP
- 指定したフォルダ内のファイルを1つずつ処理するLOOP
- 指定したフォルダ内のフォルダを1つずつ処理するLOOP
- 読み込んだCSV / Textのデータを1行ずつ処理するLOOP
- 読み込んだXMLのノードを1つずつ処理するLOOP
- 指定したアカウントのEメールを1件ずつ処理するLOOP
- 繰り返し処理を抜けたい! or 次のデータを処理したい!
- LOOPコマンドに関連するシステム変数
- まとめ
※AAE Clientのバージョン:11.3.4.0
1.LOOPコマンドの概要
プログラミングではお馴染みですが、
LOOPコマンドは処理を繰り返すときに使います。
プログラムと同様にRPAでも同じ処理を何度も実行することがありますが、
同じ処理(コマンド)を何度も記述することは効率が良くありません。
処理を記述したら、その処理を何度も繰り返し実行できるととても便利です。
Automation Anywhereではこの繰り返し処理を非常に簡単に使うことができます。
2.LOOPコマンドの使い方
1.回数を指定するLOOP
Timesを選択すると、繰り返し処理の回数を指定することができます。
プログラミングのFor文と同じような使い方ですね。
下の画像のように固定値を設定することもできますし、変数を指定することもできます。
2.List変数の要素を1つずつ処理するLOOP
Listを選択すると、List型の変数を指定して要素を1つずつ参照して処理することができます。
下図のように実装すると、List型の変数である$my-list-variables$の中身を
Message Boxで表示させることができます。
3.条件を指定するLOOP
指定した条件に合致する間、繰り返し処理をさせることができます。
プログラミングのWhile文と同じような使い方ですね。
Conditionを選択すると、条件を指定するダイアログが表示されます。
条件を指定するダイアログはIF/ELSEコマンドと同じです。
IF/ELSEコマンドの詳細はこちらを参照してみてください!
繰り返しの終了時に条件を確認にチェックすると、
プログラミングのDo While分と同じような使い方ができます。
4.読み込んだExcelのデータを1行ずつ処理するLOOP
Each row in an Excel datasetを選択すると、
Excelコマンドで読み込んだデータを1行ずつ処理することができます。
データを参照する場合は、システム変数:$Excel Column$を使用します。
このLOOPコマンドの前にOpen Spreadsheetコマンドと、Get Cellsコマンドで
Excelのデータを読み込んでおく必要があります。
5.スクレイピングしたデータを1行ずつ処理するLOOP
Each row in an Internet Explorer Tableを選択すると、
Web RecorderのExtract Tableで取得したテーブルデータを1行ずつ処理することができます。
データを参照する場合は、システム変数:$Table Column$を使用します。
出力されたCSVファイルを再度読み込む必要がないので便利ですね。
Web Recorderによるデータスクレイピングの詳細はこちらをご参照ください!
6.Databaseから取得したデータを1行ずつ処理するLOOP
Each row in a SQL Query datasetを選択すると、
Databaseコマンドで読み込んだデータを1行ずつ処理することができます。
データを参照する場合は、システム変数:$Dataset Column$を使用します。
このLOOPコマンドの前にConnectコマンドと、SQL Queryコマンドで
データベースのデータを読み込んでおく必要があります。
7.指定したフォルダ内のファイルを1つずつ処理するLOOP
Each file in a folderを選択すると、指定したフォルダ内のファイルを
1つずつ参照して処理することができます。
ファイル名を参照する場合は、システム変数:$FileName$を、
拡張子を参照する場合は、システム変数:$Extention$を、
ファイルが格納されているフォルダパスを参照する場合は、
システム変数:$CurrentDirectory$を使用します。
8.指定したフォルダ内のフォルダを1つずつ処理するLOOP
Each folder in a folderを選択すると、指定したフォルダ内のフォルダを
1つずつ参照して処理することができます。
フォルダ名を参照する場合は、システム変数:$FolderName$を、
親フォルダのパスを参照する場合は、システム変数:$CurrentDirectory$を使用します。
9.読み込んだCSV / Textのデータを1行ずつ処理するLOOP
Each row in a CSV/Text fileを選択すると、
Read From CSV/Textコマンドで読み込んだデータを1行ずつ処理することができます。
データを参照する場合は、システム変数:$Filedata Column$を使用します。
このLOOPコマンドの前にRead From CSV/Textコマンドでデータを読み込んでおく必要があります。
10.読み込んだXMLのノードを1つずつ処理するLOOP
Each node in an XML datasetを選択すると、
XMLコマンドで読み込んだノードを1つずつ処理することができます。
データを参照する場合は、システム変数:$XML Data Node$を使用します。
このLOOPコマンドの前にStart XML Sessionコマンド、
Get Node(s)コマンドでデータを読み込んでおく必要があります。
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$:電子メールの受信時刻を返します。
メールの設定は下図の通り、Email Automationコマンドと同じです。
12.繰り返し処理を抜けたい! or 次のデータを処理したい!
LOOPコマンドで処理を繰り返していると、
条件によっては処理を飛ばして次のデータに進みたかったり、
繰り返し処理を中断したかったりする場合があります。
こういったときは、Continue Loopコマンド、Exit Loopコマンドを使います。
サンプルを作成してみました。
Excelのデータを1行ずつ処理していくサンプルですが、
IF/ELSEコマンドを使って、年齢項目を判定しています。
30歳よりも大きい場合は処理対象外なので、
Continue Loopコマンドを使って次のデータに進みます。
また、0歳よりも小さい場合は不正データの可能性があるので、
Exit Loopコマンドを使って繰り返し処理を中断します。
3.LOOPコマンドに関連するシステム変数
コマンドの使い方でもご紹介しましたが、LOOPコマンドを使いこなすには
システム変数を理解する必要があります。
変数マネージャータブの「システム変数を表示」から、
LOOPコマンドに関連するシステム変数を確認してみましょう。
LOOPコマンドに関連する変数についての説明が記載されています。
実際には英語での説明文ですが、簡単に日本語訳してみました。
こちらはメール関連のシステム変数です。
4.まとめ
今回はLOOPコマンドについてご紹介しました。
RPAで良く作成されるデータ入力するボットは
必ずと言っていいほどLOOPコマンドを使って実装されています。
前回のIF/ELSEコマンドも組み合わせてより複雑なボット構築を目指しましょう!
ぜひ使ってみてください!
著者紹介
先端技術推進統括部
RPAビジネス推進部
鈴木 陽介
C#によるシステム開発、POS開発を経てRPAエンジニアに。