IQ Botを動かすRPAの作り方：Automation360編

#はじめに
[IQ Bot](https://qiita.com/IQ_Bocchi/items/26c4a7065e4c8e64a427)を動かすためのRPAの作り方は、そんなに難しくありません。

この記事では、Automation AnywhereのクラウドネイティブのバージョンであるAutomation360での作り方を説明します。

#IQ Bot を動かすRPAの作り方（Automation360）

IQ Bot を動かすためには、２つのBotを使います。
Step1、Step2でそれぞれ解説していきます。

##Step1：IQ Botに書類を処理させるためのRPAを作成し処理する

以下の記事はタイトル上は「フォルダ内のファイルを一括処理するループの組み方」となっていますが、実例としてIQ Bot のアップロード処理を取り上げています。

したがって、以下の記事のとおりのBotを作れば、IQ Bot に書類を処理させるためのBotができあがります。

https://qiita.com/IQ_Bocchi/items/ed8a17deb6a1d64473c7

このBotは、あくまでもIQ Botのサーバーに「書類を処理してねー」とリクエストするための処理です。

このBotの処理が完了した状態は、あくまでも「IQ Bot に書類の処理を依頼したよ」というステータスであって、IQ Bot 側が「処理を完了」した状態のことではありません。

処理が完了すると、IQ Botは一旦サーバー内（クラウドの場合はクラウドのサーバ）にデータを出力します。

出力の流れを詳しく知りたい人はこちらを参照してください。
（初心者の方は読み飛ばしてもいいですが、正しく運用設計をするには、以下の知識は必須になります）

https://qiita.com/IQ_Bocchi/items/f90188352947ae054ab8


##Step2：できあがったcsvをダウンロードするためのRPAを作成し処理する

サーバー内に出力されたCSVのデータをもらうためには、ダウンロードのための別のBotが必要です。

作り方は以下のとおりです。

ダウンロードのアクションは、そもそも「該当フォルダのファイルを一括でダウンロードする」という仕様なので、ループを回す必要はありません。

![ダウンロード.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/b25caf72-c5c4-7b16-99ac-0557ed13c777.jpeg)

|#|必須<br>／<br>任意|説明|
|:-----------------|:------------------|:------------------|
|①|必須|インスタンス名を指定します。|
|②|必須|[リストの中から、こちら（リンク）](https://qiita.com/IQ_Bocchi/items/f90188352947ae054ab8)のどのフォルダの書類をダウンロードしたいかを指定します。<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587845/bd26f00d-56c9-3d85-1e57-7163e1e57ff7.png)<br>リストの「Untrained」はフォルダの「Not Processed」に該当します。|
|③|必須|ダウンロードしたファイルを格納したいクライアントのフォルダパスを指定します。|
|④|任意|任意ですが基本的にはチェックを入れます。<br>ここにチェックを入れないと、ダウンロードが完了してもサーバーにファイルが溜まり続け、処理をかけるたびに「なんか知らないファイルが一緒にダウンロードされてくるんですが・・・？！」ってなります。<br>チェックを入れることで、ダウンロードが完了したファイルを都度サーバーからクリアし、新しいファイルだけがダウンロードできるようになります。|
|⑤|任意|処理結果を文字列型の変数に格納したい場合は指定。<br>Success,もしくはエラーメッセージを指定した変数に入れることができます。|

#補足事項（重要）

##補足① アップロード用のBotとダウンロード用のBot

アップロードとダウンロードのRPAは、別のTaskbotに分けてスケジュール実行するのがベストプラクティスです。
が、どうしても同じTaskbotで処理したい場合は、「遅延（Delay）」などのアクションを使って、アップロードのあと数十秒～１分程度待ってからダウンロードをするとよいと思います。

##補足②　ダウンロード用のBotの組み方

取得したいフォルダごとにダウンロードアクションを実行する必要があるので、計４アクション組む必要があります。

##補足③　ダウンロードしたCSVのネーミングルール（謎のキーは何？）

たとえば「サンプル帳票.pdf」という名前のファイルをIQ Botで処理した場合、出力されるCSVのファイル名は「<font color="red">746c3077-c7cc-4387-b83f-6e77d638ce11-</font>サンプル帳票.pdf.csv」のようになります。

赤字部分は、[UUID](https://e-words.jp/w/UUID.html)というフォーマットのキー＋区切りのハイフンとなっていて、ダウンロードしたファイル名の重複を避けるためにIQ Botが必ずつけてきます。

UUIDは36桁なので、ハイフンと合わせて常に37桁になります。

したがって、出力されたファイル名（拡張子の.csvは除く）から頭の37桁を除外すれば、もとのファイル名がとりだせます。

##補足④　ダウンロード用Botの後の処理

ダウンロード処理の後、一般的には、以下のような後続処理のBotを組みます。

| No. | 振り分け先フォルダ | ファイル形式 | 後続処理のBot |
|:-:|:-|:-:|:-|
| １  |Success   |CSV   | 正常系の処理（画面入力など）を実施するBot |
| ２  |上記以外<br>（Unclassified, Not Processed(Untrained), Invalid）    | 元の画像データの形式<br>（PDF,JPG,PNG,TIFF） | 当該フォルダにファイルが振り分けられたことを、担当者にメール通知するBot<br>（メールアクションの中で、該当のファイルを添付ファイルにする） |

##補足⑤　アップロードをかけた後、いくら待ってもダウンロードができない？

アップロード処理をかけたのに、いくら待ってもどのフォルダからもダウンロードができません！

・・・というケースの8割9割が、アップロード処理の前にIQ Bot をプロダクション化するのを忘れていることが原因です。

以下の記事を参考に、IQ Botがプロダクション化されているかを確認し、プロダクション化されていなかったらしましょう。

https://qiita.com/IQ_Bocchi/items/770dfcd569bcd5e4cad3

IQ Bot をプロダクション化していない状態でアップロード処理をかけると、アップロードされた書類が内部的に処理待ちの状態となり、プロダクション化された時点で処理が走ります。

##補足⑥　ダウンロードをすると、身に覚えのないファイルが大量にダウンロードされてくるんですが・・・？

これには２つの原因が考えられます。

いずれもバグでななく、仕様どおりの挙動なのですが、知らずに事象に当たってびっくりしている人を何人も見てきたので書いておきます。

### 原因１：ダウンロード処理のチェックのつけ忘れ

ひとつはダウンロード処理のパラメーターの設定で、「Delete files from the server after downloading」のチェックをつけ忘れている場合です。

これをつけ忘れると、ダウンロードが完了したファイルもサーバーから消されずに残り続けます。

結果、次のファイルをダウンロードしようとしたときに、サーバーに残っているダウンロード済みのファイルも一緒にダウンロードされてきます。

### 原因２：プロダクション化を忘れた状態で何度もアップロードをかけ直した

もうひとつは、補足④で解説したプロダクション化を忘れた状態で、何度もアップロードをかけ直した場合です。

プロダクション化をしていない状態でファイルをアップロードすると、そのファイルはIQ Bot サーバーの内部で処理待ちの状態として永遠にたまり続けます。そして、プロダクション化がかかった瞬間に処理が走ります。

これをやった後にダウンロードの処理をかけると、プロダクション化していない状態で処理をかけたファイルの結果が一気にダウンロードされます。

#以上！

IQ Bot を動かすRPAの作り方について、解説は以上です。

わかりにくい点、もっと聞きたい点などありましたら、コメントやTwitterでお気軽にご質問ください。