ZapierからAutomation 360 Control RoomのAPIを叩いてロボットを実行する

#はじめに

最近、RPAの次はiPaaS！みたいな話もありますが、個人的には両方使えると自動化の幅が広がりますし、両方のいいところを活用し、時に片方だけを利用したりして、素早く目的を果たすことができると思っています。

というわけで、今回は個人でも試しやすいiPaaSのZapierからAutomation 360のAPIを叩いてみる。というのをやってみます。

#この投稿で紹介したいこと、伝えたいこと
* iPaaSとRPAプラットフォームの連携、設定例
* ZapierのWebhookアクションは便利だけど、接続する相手によってはCustom　Requestを使ったほうがいいケースがありますよ。

**なので、Zapierの使い方も、A360のAPIの使い方も分かっている人の場合、参考になるのは後者のみです。**

#想定している業務
これ！というのは特になくて、同じ仕組みで色々な業務に使えると思いますが、いちおう例えばこんな感じ。

1. （今回は割愛）Google Sheets等で元データを作る
1. Google Driveにファイルをアップロードする、もしくは所定のフォルダにシートを移す
1. ファイルがアップロードされたのをZapierが検出し、Automation 360のAPIを叩く
1. （今回は割愛）Automation 360がSalesforce（APIを使うアクション利用）と、APIの無いレガシーシステムへデータを登録

Zapier -> 

#準備するもの
* Zapier (Webhookが使えるStarter Plan以上)
* Automation 360 (製品版）
* 「API キーを生成」が可能なロールを持ったユーザー　（Automation 360)
* その他Bot実行に必要な権限　（Automation 360)

#大まかな手順
###Automation 360側
* 使用するユーザーに「API キーを生成」の権限を付与する
* APIキーを生成する

###Zapier側
* 新しくZapを作成し、トリガーを設定する
* Webhookアクション（POST）を追加し、設定する
* Webhookアクション（Custom Request）を追加し、設定する








#手順詳細
###Automation 360側

####使用するユーザーに「API キーを生成」の権限を付与する
作業を行うユーザーが使用するロールに「API　キーを生成」の権限を付与します。
（ロールやユーザーを編集する権限がない場合はConrol Roomの管理者に相談してください。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/a82db248-91c9-6ab6-7c97-efd03238f983.png)

####APIキーを生成する

まず、「マイ設定」を開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/fccec81e-ca2a-ff1e-7e52-bee045a6fd07.png)

画面右上に表示される「APIキーを生成」ボタンを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/624b5e95-30fa-84bd-4a9e-52c3b5f4efc9.png)

APIキーが生成されるので、メモ帳などに貼り付けておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/32f4c25f-359a-75ab-aa7b-7ce4e9470d6c.png)


###Zapier側

####新しくZapを作成し、トリガーを設定する
今回の例ではGoogle Driveのフォルダに新たにファイルが作成されたら。というトリガーにしてみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/1f0a8af8-9517-31de-00b5-594f92e1a018.png)

トリガーのセットアップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/2a604b1b-42e4-85dd-7de1-35c3ec02729f.png)

トリガーをテストしてみます。以下のような結果になっていれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/da3b1cee-3110-7f2e-53d4-61e1c1c00a2a.png)

####Webhookアクション（POST）を追加し、設定する
EventはPOSTを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/586559fa-03f3-3d36-3399-bbb12b51cb1a.png)



アクションは以下のように設定します。
その他の設定フィールドはそのままで大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/39ce7e2e-8fd6-59da-99bf-798d78a3d603.png)


URLはこちら。スクリーンショットの空白部分は使用するControl Roomにより変わります。

```
https://使用するControl　Roomのドメイン.my.automationanywhere.digital/v1/authentication
```

設定ができたらテストしてみましょう。以下の例のように「token」が返り値として得られていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/276d672a-de2d-7eb9-b035-5e5cb455392f.png)


####Webhookアクション（Custom Request）を追加し、設定する
こちらも本来でしたらWebhookアクション（POST）を使いたいところですが、どうもヘッダーの書式などが微妙に合わないようで、Custom Requestで行うことにします。
もしかしたら私のやり方が悪いだけかもしれませんが、APIをローコードなプラットフォームから叩く時にこういうことが起こりやすい気がします。

まず、Webhooksアクションを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/9e7008f7-0fdf-3dc1-31a9-f84a21d0f127.png)

次に、Custom　Requstを選びます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/d22d2c8b-4d9f-7a2c-3494-f918bd0ccd89.png)

以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/d38e77c7-2563-82d1-5d55-d8b785cfe927.png)

設定項目


##### Data部分の値
fileIdとrunAsUserIdsに設定する***の値については、下に別トピックとして取得方法をまとめています。

```
{
  "fileId": *****,
  "runAsUserIds": [
    ***
  ]
}
```

##### fileIdに設定する値の取得方法
こちらは実行したいBotのIDです。実は各BotにはIDが振られていまして、対象のBotを開いた時に以下のようなURLになっていますが、こちらのURLの*****の部分を使用します。
Botは公開レポジトリにチェックインされている必要があります。

```
https://使用するControl　Roomのドメイン.my.automationanywhere.digital/#/admin/users/*****/edit
```

##### runAsUserIdsに設定する値の取得方法
こちらは実行するBot　RunnerのIDです。ユーザーにもIDが振られています。対象のユーザーをControl　Roomの管理メニューから開いた時に以下のようなURLになっていますが、こちらのURLの***の部分を使用します。

```
https://使用するControl　Roomのドメイン.my.automationanywhere.digital/#/bots/repository/public/taskbots/***/view
```


##### Headersの部分に入力するもの
| ヘッダー | 値 |
|:-:|:-:|
| X-Authorization |  token(挿入方法は下記を参照) |
| Content-Type | application/json  |

##### Postアクションで取得したtokenを挿入する方法
下図のように値のフィールドをクリックすると、「Insert　Data」というメニューが表示されます。
これにより、先のアクションで取得した様々な値を挿入することができます。
今回は3.POSTで取得したTokenを挿入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/63c68275-5429-276f-502c-3d04e903b0de.png)

### 完成
設定が終わったら、「Continue」を押したら完成です。テスト実行をしてみてください。
上手く動作したら「Turn on Zap」を押すと、トリガー条件を満たすと自動実行されるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/dc92a57e-eeaf-b84e-de89-b6fdca5e7d3e.png)