概要
クラウド型RPAソフトウェアのAutomation Anywhere A2019では、無料のCommunity Edition1が利用できます。そして、ExcelやCSVなどの身近なファイルを扱うロボットを簡単に作成できます。今回は、CSV ファイルを読み込み、1行ずつ中身を表示してみたいと思います。5分もあればロボットを作成することができます。
利用環境
Automation Anywhere A2019 Community Edition ビルド1598
作成するロボット
以下のCSVファイルをヘッダーを付けてUTF8で読み込み、その後 Message Box で1行ずつ表示していくようにします。CSVファイルはd:\input.csv
に配置します。
ユーザー名 | 姓 | 名 | 会社名 | 電子メールアドレス | パスワード |
---|---|---|---|---|---|
akiko.yosano | 与謝野 | 晶子 | 株式会社アールピーエー | akiko.yosano@rpa.org |
9sbfJLE7 |
ichiyo.higuchi | 樋口 | 一葉 | 竹倉部株式会社 | ichiyo.higuchi@takekurabe.com |
cqR3JuE3 |
jun-ichiro.tanizaki | 谷崎 | 潤一郎 | オートメーション株式会社 | jun-ichiro.tanizaki@automation.jp |
iRLmuEdp |
kenji.miyazawa | 宮沢 | 賢治 | 銀河鉄道株式会社 | kenji.miyazawa@ginga.ly |
gPDePfZW |
ohgai.mori | 森 | 鴎外 | 株式会社林太郎 | ohgai.mori@rintaro.org |
rwfnbcXx |
osamu.dazai | 太宰 | 治 | レストランメロス | osamu.dazai@merosu.com.au |
6JEGHP2J |
ryunosuke.akutagawa | 芥川 | 龍之介 | ノーズエレクトロニクス | ryunosuke.akutagawa@n-ele.com |
p7gPdXb2 |
shiki.masaoka | 正岡 | 子規 | ホトトギスコミュニケーションズ | shiki.masaoka@hototogisu.com |
aZJv8Us8 |
soseki.natsume | 夏目 | 漱石 | 坊ちゃん株式会社 | soseki.natsume@bocchan.org |
C6U2LarS |
yukichi.fukuzawa | 福沢 | 諭吉 | ケイオウ商会株式会社 | yukichi.fukuzawa@ko-shokai.jp |
QqabeQ96 |
Control Roomの「マイBot」で、新しくファイル名 (たとえば「Read CSV」など) をつけてロボットを作成しておいてください。
使うアクション
CSVを扱うアクションは以下の3つがあります。
加えて、LOOP、Message Box のアクションも使います。
また、今回、簡単な解法が2通り存在します。やり方によっては Data Table も使います。
解法1. CSVをLOOPで1行ずつ読み込む方法
今回のように、CSVから読み込んだデータを再活用せずに単純にメッセージボックスで表示するだけであれば、1行ずつCSVから読み込んで都度表示する方法が簡単です。
1-1. CSVファイルの指定部分を作成 (1-1と同じ)
フローの左側のアクションパレットから「CSV/TXT」グループの中の「開く」をフローの開始と終了の間にドラッグ&ドロップします。
「CSV/TXT: 開く」アクションがフローに追加されたら、これを選択して「アクションの詳細」から以下のものを設定します。
-
ファイルパス:
デスクトップファイル
を選択して、「参照」ボタンをクリック、しばらくしてファイル選択ダイアログボックスが表示されるので、d:\input.csv
を選択します。 - ヘッダーを含む: チェックボックスをONにします。
終わったら、「アクションの詳細」ペインの右上にある「適用」ボタンをクリックして保存してください。
1-2. CSVレコードの列挙ループの作成
次に、CSVファイルの中身が10人分のアカウント情報なので、この分だけ繰り返しを行うループの処理を作成します。10件という回数は、ファイルを動的に読み込んで判断するため、実際の実行時にはCSVファイルに何件データが含まれていてもかまいません。
アクションパレットの「ループ」グループから「ループ」アクションを終了の直前にドラッグ&ドロップします。
ループアクション生成直後にアクションの詳細を見ると「反復子」=n回の繰り返しになっています。このドロップダウンの中身を見てみます。
「CSV/TXTの各行に対して」を選択します。
「この変数に現在の行を代入」の「変数の作成」ボタンをクリックします。このアクションにより、CSVを1行ずつ読み込んで、レコード型 (記録となっていますが...)の変数 (1次元配列) に格納します。
「変数を作成」で名前をrecordsとつけ、「Create & Select」ボタンをクリックします。
その後、アクションの詳細の右上の「適用」ボタンをクリックしてください。フローの中のループを選択した状態で以下のような画面となります。
1-3.レコードの表示部分の作成
ループの中に、レコードを表示するメッセージボックス表示アクションを作成します。
アクションパレットの「メッセージボックス」グループから「メッセージボックス」アクションをループの囲いの中にドラッグ&ドロップします。
メッセージボックスアクションの詳細で、「表示するメッセージを入力します」にテキストを入力します。
入力するテキストは以下の通りです。$records[0]$
は、レコード型変数の最初の要素で、CSVの最初の列が「ユーザー名」であるため、ユーザー名が表示されます。以下、カンマで区切って、次の要素を書いていきます。
$records[0]$,$records[1]$,$records[2]$,$records[3]$,$records[4]$,$records[5]$
その後、アクションの詳細の右上の「適用」ボタンをクリックしてください。
次に、現在開いているCSVファイルセッション「Default」を閉じるアクションを終了の前に挿入します。
最後に、画面右上の「保存」ボタンをクリックします。
1-4.完成!
1-5.ロボットの実行
「Run」ボタンでロボットを実行してみましょう。
すると、以下のように、10回、レコードの内容がメッセージダイアログボックスで表示されます。
最後に以下のメッセージが表示されれば正常終了です。
解法2. CSVを一気にData Tableに読み込む方法
CSVデータはData Tableに一気に読み込んでおくと、後での活用の幅が広がるため、お勧めの方法です。先ほどの解法と似ていますが、Data Tableにいったんデータを読み込む分だけステップが増えます。
2-1. CSVファイルの指定部分を作成
フローの左側のアクションパレットから「CSV/TXT」グループの中の「開く」をフローの開始と終了の間にドラッグ&ドロップします。
「CSV/TXT: 開く」アクションがフローに追加されたら、これを選択して「アクションの詳細」から以下のものを設定します。
-
ファイルパス:
デスクトップファイル
を選択して、「参照」ボタンをクリック、しばらくしてファイル選択ダイアログボックスが表示されるので、d:\input.csv
を選択します。 - ヘッダーを含む: チェックボックスをONにします。
終わったら、「アクションの詳細」ペインの右上にある「適用」ボタンをクリックして保存してください。
2-2. CSVからData Tableへファイルを読み込む部分の作成
アクションパレットから「CSV/TXT」グループの中の「読み取り」をフローの終了の直前にドラッグ&ドロップします。
「CSV/TXT: 読み取り」アクションがフローに追加されたら、これを選択して「アクションの詳細」から「値を変数に代入」の右側の「変数を作成」ボタンをクリックします。
「変数を作成」の画面で、変数に名前を付けて (たとえば「dataTable」)、「Create & Select」ボタンをクリックします。
「CSV/TXT: 読み取り」アクションの「アクションの詳細」ペインの右上にある「適用」ボタンをクリックして保存してください。
次に、現在開いているCSVファイルセッション「Default」を閉じるアクションを終了の前に挿入します。
2-3. Data Tableの中身の表示ループの作成
次に、CSVファイルの中身が10人分のアカウント情報なので、この分だけ繰り返しを行うループの処理を作成します。10件という回数は、ファイルを動的に読み込んで判断するため、実際の実行時にはCSVファイルに何件データが含まれていてもかまいません。
アクションパレットの「ループ」グループから「ループ」アクションを終了の直前にドラッグ&ドロップします。
ループアクション生成直後にアクションの詳細を見ると「反復子」=n回の繰り返しになっています。このドロップダウンの中身を見てみます。
「Data table: For each row in table」を選択します。
「Table Variable」に、先ほど作成したdataTable変数をドロップダウンリストから選択します。
次に「Assign the current row to this variable」の「変数の作成」ボタンをクリックします。
「変数を作成」で名前をrecordsとつけ、「Create & Select」ボタンをクリックします。
その後、アクションの詳細の右上の「適用」ボタンをクリックしてください。フローの中のループを選択した状態で以下のような画面となります。
2-4.レコードの表示部分の作成
ループの中に、レコードを表示するメッセージボックス表示アクションを作成します。
アクションパレットの「メッセージボックス」グループから「メッセージボックス」アクションをループの囲いの中にドラッグ&ドロップします。
メッセージボックスアクションの詳細で、「表示するメッセージを入力します」にテキストを入力します。
入力するテキストは以下の通りです。$records[0]$
は、レコード型変数の最初の要素で、CSVの最初の列が「ユーザー名」であるため、ユーザー名が表示されます。以下、カンマで区切って、次の要素を書いていきます。
$records[0]$,$records[1]$,$records[2]$,$records[3]$,$records[4]$,$records[5]$
その後、アクションの詳細の右上の「適用」ボタンをクリックしてください。
最後に、画面右上の「保存」ボタンをクリックします。
2-5.完成!
2-6.ロボットの実行
「Run」ボタンでロボットを実行してみましょう。
すると、以下のように、10回、レコードの内容がメッセージダイアログボックスで表示されます。
最後に以下のメッセージが表示されれば正常終了です。
まとめ
いかがでしたか。CSVの読み込みは後で読み込んだデータをどう活用したいかにより、大きく2通りのやり方があります。いずれの方法も、やり方の考え方さえ掴んでしまえば5分もあれば完成させることができますよ。試してみてください!
v11との比較:前のバージョンでの操作は、
$Filedata Column(列番号)$
という専用のシステム変数で値を参照していましたが、A2019ではレコード型変数を定義して値を格納するように変更になりました。
-
無料で使うためには条件があります。250名未満の小規模企業か、開発者であることなど。詳しくはCommunity Editionの解説ページをご覧ください。 ↩