Automation Anywhere EnterpriseのRun Scriptコマンドについて


公式ドキュメントに解説がありますが、あまり詳しく書いていないのでまとめてみました。

#試した環境
Windows 10
Automation Anywhere Enterprise v11.3.2

#コマンドの概要
Run Scriptコマンドは、VBScriptやJscriptを実行できるコマンドで、
Automation Anywhereのコマンドだけでは実現しづらいことなどを実現したいときに使える方法の一つです。

サンプルが下記フォルダに収録されています。
Automation Anywhere Files\Automation Anywhere\My Scripts\Sample Scripts\


#解説 (コマンド側)
コマンドを置くと以下のようなダイアログが開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/45e7a3ba-f822-d0a6-9c1b-357f0baf020b.png)
###スクリプトを選択
実行するスクリプトを選択します。ファイルパスには変数も使えます。

###パラメーター: (省略可能)
実行するスクリプトに渡すパラメーターを入力します。変数も使用できます。
スペースかタブで区切った値を入れることで複数のパラメーターを入力することが可能です。

###戻り値: (省略可能)
実行したスクリプトから値を受け取る変数を指定します。

#解説 (スクリプト側)
###Botで設定した引数（パラメーター）をスクリプト側で呼び出すための一文
WScript.Arguments.Item(0)

上記のカッコ内の数字を変えることで、複数の引数（パラメーター）を渡したときに、何番目の引数を呼び出すか指定が出来ます。
例えば、以下のような場合、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/c0ffb4db-ee6f-75c8-17bf-83057dcf8d22.png)
"引数2"を呼び出すには以下のように指定します。
WScript.Arguments.Item(1)

実際にスクリプト内の変数に値を受け渡す場合は以下のように書きます。(以下の例のvMsgはユーザが定義した変数)

vMsg = WScript.Arguments.Item(0)

###実行したスクリプトからBotへ値を受け渡す方法
スクリプトを実行するだけで完結する場合は良いのですが、多くの場合はスクリプトで処理した結果を受け取って、
Botの後続の処理に使いたいケースが多いと思います。
そんな場合にはファイルへ書き出しても良いのですが、以下の一文を書く事でBotの変数に受け渡しすることが出来ます。

Wscript.Stdout.Writeline(スクリプト内の変数)

例えば、vDateというスクリプト内のユーザ変数を、Run Scrptのコマンドで指定したBotの変数$v戻り値$に受け渡したい場合、
Wscript.Stdout.Writeline(vDate)
とスクリプト内で記述し、Run Scriptコマンドの戻り値には以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/c0ffb4db-ee6f-75c8-17bf-83057dcf8d22.png)

#サンプル

###Botからスクリプトに値を渡して、シンプルなメッセージボックスで表示する

まず、以下のようなvbsファイルをMy Scriptsフォルダの下に作ります。（テキストエディタで作成。）

```VB:SimpleMessageBox.vbs
vMsg = WScript.Arguments.Item(0)
vResult = MsgBox (vMsg, 00, "VBScriptのメッセージボックス")
Wscript.Stdout.Writeline(vResult)
```

次に、これを呼び出すBotを作ります。
Prompt For Valueでユーザーが値を入力して、それをRun Scriptで動かすVBScriptのメッセージボックスに表示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/1c054f9b-148b-6ca7-feac-be0ac51d497e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/e4b327b1-6dfc-f69d-b0e7-438c72cccc1b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/420aba08-b391-791f-81f7-053d8e4d08fc.png)

実際動かしてみた結果は以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/30554ea5-fa10-7ae4-4beb-9c809acc1306.png)

###2つの数字をパラメーターとして渡して、かけ算をした結果をBot側で受け取る
これ自身はこんなことやって意味あるの？という内容ですが、スクリプト側で何か処理した結果を受け取る場合の例です。

```VB:Kakezan.vbs
vNumber = WScript.Arguments.Item(0)
vNumberTwo = WScript.Arguments.Item(1)
vResult = vNumber * vNumberTwo
Wscript.Stdout.Writeline(vResult)
```

Bot側はこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/2b539ade-615d-014a-0e8e-17db020412bb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/74af6f44-39ac-236b-ba52-316e46266daf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/6b41d021-ace5-5a5d-9167-a102037d192d.png)

実行結果：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490870/64a499dc-b86b-4da9-b1de-f3124582ee3e.png)


#（参考）公式の製品ドキュメント
[[Run Script] \(スクリプトの実行) コマンド](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/commands/run-script-command.html)

#関連トピック
[ポップアップに対して指定した秒数操作が無かったらBotの実行を止める方法 with VBS - Qiita](https://qiita.com/zamaezaaa/items/00d4458d2c964ede945a)

[HTAを使ってAutomation AnywhereでBot実行中に字幕を表示する - Qiita](https://qiita.com/zamaezaaa/items/b354de2dc889e1509c1e)