Automation Anywhere A2019でランダムな文字列や数字を発生させるには


# 概要
Automation Anywhere v11ではrandom型の変数があり、ランダムな数字や文字列を生成してくれる仕組みがあったことは『[Automation Anywhereでランダムな文字列や数字を発生させるには](https://qiita.com/RPAbot/items/0a26baf8158301ab6ba9)』で述べましたが、A2019ではそれがなくなった<font color="Red"><b>※</b></font>ので、代替手段が必要になります。

<font color="Red"><b>※ 少なくともA2019.13では復活しています。文字列パッケージに「ランダム文字列の生成 (Generate random string)」アクション、数字パッケージに「ランダム (Random)」アクションが追加されました。</b></font>

A2019ではお手軽に[インラインスクリプトが貼れる](https://qiita.com/RPAbot/items/bd1f8e1756d9c2cd7992)ようになったので、これを使うのがよいでしょう。今回は既にいろいろな手法が公開されており特別な環境を用意する必要がないJavaScriptを使います。

# 準備
以下のようなフローを準備します。準備の詳細は『[Automation Anywhere A2019でPython/JavaScript/VBScriptのインラインスクリプティングでプログラミングを行う](https://qiita.com/RPAbot/items/bd1f8e1756d9c2cd7992)』の「Javascript」の章に従ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/67f4bd55-5296-220d-852e-cb1dcb08f6f8.png)


# 数値
v11であった、2つの数字 (min, max)の間にある整数を得る仕組みを再現するJavaScript関数を作成します。

```Javascript:getRandomNumber.js
function getRandomNumber( min, max ) {
    return Math.floor(Math.random() * (max - min + 1) + min);
}
```
参考情報: 『[《JavaScript》範囲指定したランダムな値を得るスクリプト。](https://qiita.com/uto-usui/items/7193db237175ba15aaa3)』 by @uto-usui さん


### 呼び出し方法
1. 上記のコードを**「JavaScript: Open」**アクションの詳細「Manual script: Enter script here」に貼り付けます。
2. 変数としてリスト型変数`JscriptArgs`を作成して初期値を設定します。(サブタイプは必ず**数字**にしてください。)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4630ea15-4ccd-b36d-a543-1d3ea143d901.png)
3. **「JavaScript: Run JavaScript」**アクションで、「Enter name of function to be executed」に`getRandomNumber`、引数にあらかじめ作成しておいたリスト型変数 `JscriptArgs`を指定して保存します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/a62b25e1-c9f2-964e-c416-581c8b8c6929.png)


### 結果
10回の実行結果:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/f1a9ceee-9324-589a-67f9-82a0f5f7ebd6.png)


# 文字列

v11であった、半角英数字 (大文字/小文字バリエーションあり)から成る指定した長さ (length) の文字列を得る仕組みを再現するJavaScript関数を作成します。

```Javascript:getRandomString.js
function getRandomString( length ) {
    var c = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    var r = "";
    for(var i=0; i<length; i++){
        r += c[Math.floor(Math.random()*c.length)];
    }
    return r;
}
```
参考情報: 『[Javascriptでランダムな文字列を生成する方法](https://qiita.com/ryounagaoka/items/4736c225bdd86a74d59c)』by @ryounagaoka さん


### 呼び出し方法
1. 上記のコードを**「JavaScript: Open」**アクションの詳細「Manual script: Enter script here」に貼り付けます。
2. 変数としてリスト型変数`JscriptArgs`を作成して初期値を設定します。(サブタイプは必ず**数字**にしてください。)<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ecbcd76d-30ce-bf5c-20a7-bbc41e73c937.png)
3. **「JavaScript: Run JavaScript」**アクションで、「Enter name of function to be executed」に`getRandomString`、引数にあらかじめ作成しておいたリスト型変数 `JscriptArgs`を指定して保存します。<br/>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/387a25a7-f148-dc14-4ebc-b0dad8be82e1.png)

### 結果
10回の実行結果:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/1c2114df-ae42-a470-6e31-ed3b2267b4e1.png)

# おわりに
発生したランダム数値/文字列の重複可能性や乱数生成器の質が気になる方は、参照元の記事を見てみて工夫してください。この仕組みをよく使う場合は、アクションリストの可読性をあげるために別のTaskBotに切り出しておいてもいいかもしれません。

それではまた！