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


# 概要
フィールドまたはフォームへの入力となるテスト データの生成や、セッション文字列/ID 番号を自動生成するためにランダムな文字列や数字を作成するニーズがありますが、Automation Anywhereでは**ランダム型** (Type=Random) の変数を使うことで、いろいろな書式の乱数/ランダム文字列の生成に対応することができます。 ただし、ランダム型変数の使い方には注意点がありますので、この記事ではそれを記載します。


**環境**

* Automation Anywhere v11.3.3

**※ [A2019における方法はこちらの記事を参照してください。](https://qiita.com/RPAbot/items/6af7c6a5f190209e0917)**

# 公式ドキュメントを見ながら使ってみる
[公式ドキュメント](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/using-variables/random-variables.html?_LANG=jpjp)に使い方が載っています。ワークベンチの「変数マネージャ」で新しい変数を定義する際に「変数タイプ」を「Random」に指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/9d25e6b6-956b-866f-f160-b90104ae433e.png)


### 文字列の発生方法を試してみた
"Rand" という名前で15文字の長さのランダム文字列を生成する変数を定義してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/e28573c6-0550-c365-f7b9-42d82e898f42.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/bd3a6a25-b7d9-91c6-a1fd-429da3739617.png)

ワークベンチで以下のようなアクションリストを作成して実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ebe6099c-0e38-dfce-86b8-373e4b407526.png)

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/01fbf6cd-eb10-504e-223c-9e454074a054.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/3a2e8fec-6c68-e8f2-93fc-8268fec923c3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/7cc21178-27e4-6470-9590-33e961253aa9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/29e564ca-abc9-9b59-da3e-4edcab952fcf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/4ee7e782-8f31-9782-0b39-54b24c2de2b7.png)

### 数字の発生方法を試してみた
"Rand" という名前で-10から10000までのランダム数値を生成する変数を定義してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/caf668fa-e80d-6150-8fc2-108906cec352.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/448e1efc-9457-7cc8-7a11-17a64edef372.png)

ワークベンチで以下のようなアクションリストを作成して実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ebe6099c-0e38-dfce-86b8-373e4b407526.png)


結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/73de681c-a5be-04cf-f45a-242b179e95f5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/72dc240b-afb1-0cd3-808e-99a5349fa613.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/ac114bc7-4f2c-0c6a-2182-412563f9fe19.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/823e8bd3-fc88-10e6-30e5-d3a75f2a6e7c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/15c2ce64-1ac2-a626-adf3-35a0980cfe1f.png)


# 結論: ランダム型変数は参照するたびに値がランダムに変わる
もうお気づきかもしれませんが、ランダム型変数は、同じ変数であっても**参照するたびに中身の値が変わる**ようにできています。このことは公式ドキュメントには書かれていませんので、もしかするとアクションリスト内の2か所で、最初に生成した文字列/数値と同じ値を参照しようとしたときに、ランダム型変数を直接参照してしまうと、違う値を参照してしまいます。あとで同じ値を参照したい場合は、**一度Value型の変数に代入して、2回目はValue型変数を参照する**ようにしてください。

変数
`$GenRand$`: Random型、長さ15の文字列
`$Rand$`: Value型、初期値=NULL

アクションリスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/89e7f0d8-20ba-c1cd-5c80-5d8e3d126b51.png)

結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/08f00cf8-023f-fa83-213f-b00913007b28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/08f00cf8-023f-fa83-213f-b00913007b28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/08f00cf8-023f-fa83-213f-b00913007b28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/08f00cf8-023f-fa83-213f-b00913007b28.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479715/08f00cf8-023f-fa83-213f-b00913007b28.png)


# 参考記事

* [ランダム変数](https://docs.automationanywhere.com/bundle/enterprise-v11.3/page/enterprise/topics/aae-client/bot-creator/using-variables/random-variables.html?_LANG=jpjp)- Automation Anywhere 製品ドキュメント

# 関連記事
Automation Anywhere における変数の取り扱いは別記事にもあります。

* [Automation Anywhere でList変数、Array変数を使う](https://qiita.com/RPAbot/items/6f98d0e6585e4f973e28)
* [Automation Anywhere 便利なシステム変数一覧](https://qiita.com/RPAbot/items/4f03665cac09dcf6a246)