Automation Anywhere A2019で業務アプリ (ウェブ) に入力する

# 概要
クラウド型RPAソフトウェアのAutomation Anywhere A2019では、[無料のCommunity Edition](https://qiita.com/RPAbot/items/2a2d94eeab641dfa6516)[^1]が利用できます。そして、お使いの業務アプリを扱うロボットを簡単に作成できます。今回は、CSV ファイルを読み込み、業務アプリに入力していくロボットを作成します。とはいっても業務アプリは使っている種類がひとそれぞれ、かつ一般に出回っていないものもあるため、今回はAutomation Anywhere社が提供しているウェブベースの[デモアプリ](http://rpademo.automationanywhere.com/
)への入力をやってみます。

デモアプリのログイン画面 (登録ユーザーでログインすると資料一覧が表示される)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/9e6a108d-f18e-739f-48ef-4e5db5f097da.png)

デモアプリのデータ登録画面 (新規ユーザー登録)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/60546f22-4726-9b31-005b-44c04ff830b7.png)

[^1]: 無料で使うためには条件があります。250名未満の小規模企業か、開発者であることなど。詳しくは[Community Editionの解説](https://qiita.com/RPAbot/items/2a2d94eeab641dfa6516)ページをご覧ください。

### 利用環境
Automation Anywhere A2019 Community Edition ビルド1598

# 作成するロボット
以下の手順で操作を行うロボットを作成します。

* ファイルトリガーでCSVが置かれたら開始
* [業務アプリ](http://rpademo.automationanywhere.com/)を起動
* CSVファイルを開いてデータを読む
* 1行ずつデータを入力
* 最後に登録したユーザー名/パスワードのデータでログインして正しく登録されていることを確認

CSVファイルは以下のものをUTF-8で保存して`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」で、新しくファイル名 (たとえば「LOB」など) をつけてロボットを作成しておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/b687317e-f53b-67c9-73e0-9e5fb53515f0.png)


# 使うアクション
[CSV](https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/commands/cloud-csv-text-command.html?_LANG=jpjp)を扱うアクションは以下の3つがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/5a702e81-be2c-82e7-8466-37c08116ba35.png)

加えて、[ループ](https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/commands/cloud-loop-command.html?_LANG=jpjp)と[Recorder](https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/commands/cloud-recorder-command.html?_LANG=jpjp)のアクションも使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/224d595f-dd5c-5553-9aca-68e74f32d554.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/9e4f5b66-254f-4429-52f8-df4290f9de7e.png)


# 作成してみよう
### 1. CSV の読み込みループができたところからスタート
前回の記事『[【5分でできる】Automation Anywhere A2019でCSVファイルを読み込む](https://qiita.com/RPAbot/items/66c05fc7092a2a0eba10)』の解法1のところまでできていることを前提とします。(メッセージボックスの部分は作成していないものとします)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/56886f5c-d0d9-165d-472a-995e03d9417c.png)
ループの「アクションの詳細」では、`$records$`変数を作成して指定しているものとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/a44bbab7-5d09-6479-ea17-22a6320248da.png)


### 2. 業務アプリを起動するアクションを入れる
「CSV/TXT: 開く」アクティビティの次に「ブラウザ」-「Webサイトを開く」アクティビティをドラッグ＆ドロップします。アクションの詳細では、URLとブラウザーを指定できます。利用するブラウザーはせっかくなのでGoogle Chromeを使ってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4efe3986-09b9-620d-9158-4f7750101b05.png)

指定する内容

* URL: `http://rpademo.automationanywhere.com/newuser.php`
* ブラウザ: Google Chrome

終わったら、アクションの詳細ペイン右上の「適用」ボタンをクリックします。

### 3. データ入力部分を作成する
次に、`http://rpademo.automationanywhere.com/newuser.php`のページをGoogle Chromeで開いたままにして、ループの中に「Recorder」-「Capture」アクションをドラッグ＆ドロップします。「Object detail」に「ウィンドウ」を選択、「ウィンドウを更新...」ボタンをクリックして、しばらく待つと、ドロップダウンリストから現在開いているウィンドウタイトルの一覧が選択できるようになります。ここから「Welcome to AA Test Page - New User Registration - Google Chrome」を選択してウィンドウタイトルに指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/82eaf642-aa22-5b8b-56c8-d3e398ac3c8c.png)
「オブジェクトをキャプチャ」ボタンが押せるようになるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/6f0440de-fbff-0ad6-94c4-f3302aa4f140.png)
キャプチャするターゲットウィンドウに切り替わるので、File Nameの右側にあるテキストボックス上にマウスカーソルを乗せます。すると、しばらくして赤い枠がテキストボックスを囲うようになります。そうなったら、クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/c0579327-0671-4d16-c4df-e3b1d2d7186b.png)


>**注:** うまく動作しない場合は『[【トラブルシューティング】 Automation Anywhere A2019 で Google Chrome 上のウェブスクレイピングが作動しない時の処置方法](https://qiita.com/RPAbot/items/42e050529b7a35194aa1)』の記事を参照して、環境を設定しなおしてからもう一度試してみてください。

すると、First Nameのテキストボックスがキャプチャされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/81b62a65-ffdd-4c63-f55e-28f498d8d793.png)

「オブジェクトのプロパティ」一覧を見ると、以下の8つのプロパティがキャプチャされていることがわかります。(「オブジェクトのプロパティ」のテキストをクリックすると、全46プロパティのうち値がキャプチャされた8つだけが表示されます)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/8f2b6b2a-92a0-bef1-737a-7b0c36f426a3.png)
下に表示されている「Action」のドロップダウンリストから「Set text」を選択、「keystorkes: Enter keystorkes here or use the on-screen keyboard」のフィールドには`$records[2]$`と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/460492ea-9832-9965-fffb-5714fb7d6b09.png)
終わったら、アクションの詳細ペイン右上の「適用」ボタンをクリックします。これでFirst Nameフィールドに「名」の値を入力する操作が出来上がりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/cfe2fd21-89dd-d4a6-851b-b7bf914ea9bd.png)

同様に、ループ内のRecorder:Captureのすぐ後ろに、新たなRecorder:Captureアクションを挿入します。他のフィールドもキャプチャして入力値を設定します。

|フィールド|Keystrokesへの入力値|
|:--|:--|
|Last Name|`$records[1]$`|
|Company Name|`$records[3]$`|
|Email Address|`$records[4]$`|
|Username|`$records[0]$`|
|password|`$records[5]$`|

最後に、「Register」ボタンもキャプチャして、これにはAction=Clickを指定します。
ここまでで、データ入力部分は完成です。(そろそろ長くなってきたのでリスト表示のみで表します。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/a3c545bb-918b-7edc-60af-40af58a65afd.png)

一旦、ページ右上の「保存」ボタンをクリックして、ここまでの作業を保存しておきます。

>**注:** ここまでで「Run」でロボットを実行してみることもできます。ウェブフォームのフィールドに値が自動入力されRegisterボタンが押される作業が10回繰り返されます。

### 4. ユーザーログインの部分を作成する
次にユーザーログインの画面の操作に移ります。このウェブサイトの仕様は、先ほどユーザー登録をしたユーザー名とパスワードでログインするとログインが成功してコンテンツページが表示され、それ以外だとエラーメッセージを出して引き続きログインページにとどまる、という形のようです。

ログインが成功したときに表示されるページ (コンテンツページ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/0a6342ad-354c-2a70-e0ea-f58fb345b07f.png)

ログインが失敗したときに表示されるページ (引き続きログインページ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/3501213e-6170-5242-5696-dbc1ca7e427c.png)

先ほどの画面から、Automation Anywhereのロゴをクリックするとユーザーログインの画面に遷移しますので、Recorder:Captureアクションでロゴをクリック、その後に、`$records$`変数に残っているCSVファイルの最後の行 (10番目) のユーザー情報を使ってログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4c60cf15-b98b-d5b0-6ba7-c1d56689a209.png)

|Capture先のコントロール|Action|Keystrokesへの入力値 (あれば)|
|:--|:--|:--|
|AAロゴ|Click||
|Usernameフィールド|Set text|`$records[0]$`|
|Passwordフィールド|Set text|`$records[5]$`|
|Log inボタン|Click||

この4つのアクションが加わり、アクションリストは以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/a44f16e7-ac40-b254-c314-c68ef93d7eda.png)

一旦、ページ右上の「保存」ボタンをクリックして、ここまでの作業を保存しておきます。

>**注:** ここまでで「Run」でロボットを実行してみることもできます。ウェブフォームのフィールドに値が自動入力されRegisterボタンが押される作業が10回繰り返され、その後ユーザーログインの画面に遷移してコンテンツページが表示されます。

### 5. ファイルを置いたらトリガー起動の部分を作成する
最後に、ファイルトリガーを作成します。フローの最初に戻り、左のアクションパレットから「トリガー」をクリックして「Files & Folders」の「File trigger」をフローの最初の「トリガー」部分にドラッグ＆ドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/0d37f60b-141b-a515-80ad-a6513b0156c3.png)

アクションの詳細では、Fileに`d:\input.csv`を指定して、「Start the bot when the file is...」は「created」を選択し、「Also start if already exists」をONにします。

完了したらアクションの詳細ペインの右上の「適用」ボタンをクリックします。

最後に、画面右上の「保存」ボタンをクリックします。

### 6. 完成!
さあ、完成です。以下のようなフローが完成しましたね！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ce6d0efe-2e7d-546d-da76-a38f4b52a7f3.png)


### 7. ロボットの実行
「Run」ボタンでロボットを実行してみましょう。トリガーを設定すると、「Run」の選択肢に「トリガーで実行」が追加されますので、これで実行してみます。
すると、以下のように待機状態となり、所定の場所にinput.csvファイルを置くと作業が始まります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/b1d1d632-d01d-b18e-5ce6-a79bd4cfe275.png)
>ちなみに、ファイルトリガーはUSBメモリなど取り外し可能なドライブだと動かないようです。

実行している様子は以下の通りです。
![bot.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/31df7a30-b175-89e1-9e3b-ff2a60b2e3fb.gif)
⇒[動画の完全版はこちら](https://youtu.be/1LyPQOh2aW8)

最後に以下のメッセージが表示されれば正常終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/427a3cb4-04bf-18eb-6c2c-aad35e450687.png)