【Automation Anywhere】入力ダイアログで変数を含める

Automation Anywhere (AA)は他のRPAと同様、情報を保持しておくための箱としての「変数」が使えますが、なるべく初心者にも難しさを意識させないような工夫が様々されています。

# AAの変数は型がない！とても単純！
AAの変数には、Integer型、String型、Float型などの変数型がありません。文字列でも整数でも小数でも意識せずにすべて変数に入れ込むことができます。プログラマーであればよくある「変数型が合わずにエラー」とか「型キャスト」とかも考える必要がありません。

唯一あるのは、**Variable** (ひとつの値)、**List** (いわゆる配列)、**Array** (2次元配列、表)といった変数が持つ値の数の違いくらいです。Visual Basic.NETでいうVariant型のように、あらゆる種類の値を格納できます。文字列 (String) が文字 (Char) の集まりであるとか、プログラマーみたいなことは意識しなくてよいです！

# AAの変数は手入力させない！
キーボードから入力ができるところは各コマンドのダイアログボックスの中にあるテキストボックスです。"A"という名前の変数は、周りを`$`で囲んで「`$A$`」と表現されます。ただ、これを手入力する必要はなく、このことは意識する必要はありません。

テキストボックスの周りには、以下のようなメッセージが書かれていることがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/6016faca-4184-b7b7-ddc4-850d82100c1d.png)「`F2`を押して変数を入力します」

これが書かれているテキストボックスで`F2`を押してみると、変数入力ダイアログボックスが開き、選択するだけで必要な書式でテキストボックスに入力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/01ca5a91-e9a9-fe60-c4bb-156b56c9bbe0.png)

通常の変数は`$A$`、Listは各要素の値の参照に引数や名前を使い`$A(1)$`、Arrayは`$A(1,2)$`のように入力します。これも、AAが自動で認識してくれ、引数が必要な場合はダイアログボックスを表示してくれるので、特に意識する必要がありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/c49caaa9-944d-b9e5-3ade-faf707a7cc4d.png)

「`F2`を押して変数を入力します」と書かれていないテキストボックスでも、文字列を入れるテキストボックスでは大抵`F2`を押すと変数入力ダイアログボックスが開きます。これが開くところでは変数の入力が可能です。

たとえば、以下のように数字しか受け付けないテキストボックスでは`F2`を押してもダイアログボックスは開きません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/79104ef7-f685-f6c9-df5c-d09ebbce07f9.png)

ですので、AAでは手入力をしなくても変数の入力が可能です！

# AAの変数の演算はVariable Operationで実施！
通常のコマンドダイアログボックスのテキストボックスの中で演算操作 ("+"を入れて数を足してみたり、"&"を入れて変数同士を文字列としてつないでみたり)をしようとしても演算子はそのまま表示されます。つまり、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/72f67df1-8244-e0a5-462e-8b8ae35ae7da.png)
のように書いてMessage Boxを表示させると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/615c97c0-3fd7-6071-8bbb-31feb9b2d6e3.png)
のように、そのまま表示されます。通常のテキストボックス内では演算子は機能せず、変数の値をつなげて表示したい場合は単に「`$A$$B$`」と書けばOKです。

では、変数同士の演算はどうするのかというと、「Variable Operation」コマンドを使います。左辺に対して右辺の値を代入します。右辺では四則演算が可能です。ただし、変数の値に数字外のものが含まれていたり、四則演算の式と解釈できない表現が入っている場合は、すべて文字列として扱われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/c34ddcac-6ff4-34bd-eb1f-a118eda26c9a.png)

List、Arrayの場合はどの要素に値を導入するかも指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/96bd829f-b210-7e31-20be-ba98503bb4be.png)

# 文字列の加工はString Operationで実施！
それでは、文字列を加工したい場合はどうするかというと、「String Operation」コマンドを使います。これには12個のコマンドがあり、ダイアログボックスで引数を指定していくことができます。詳しい文法がわからなくても、ダイアログボックスの誘導に従っていけば、選択するだけでコマンドの記述が完了します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/7cd5f5ce-0ba4-888a-b8c4-62c1fd17c536.png)

|コマンド|説明|
|:--|:--|
|**Before-After**|前後の文字列を指定して、その間の文字列を抽出する。|
|**Compare**|2つの文字列を比較し、「TRUE」もしくは「FALSE」を返す。|
|**Find**|指定する語が、対象の文字列の何桁目に初めて出現するかを見つける。|
|**Join**|Listに格納されている値を1つにつなげてValueとして返す。|
|**Length**|文字列の長さを返す。|
|**Lower Case**|大文字を小文字にする。|
|**Replace**|指定する語を別の語に置き換える。全角スペースの削除も可能。|
|**Reverse**|文字列を逆さに並べる。|
|**Split**|指定した区切り文字で文字列を分割し、Listに格納する。|
|**Sub String**|指定した開始位置から（指定した長さで）文字列を抽出する。|
|**Trim**|文字列の前と後ろの半角スペースを削除する。文字列内のスペース、全角スペースは削除されない。|
|**Upper Case**|小文字を大文字にする。|

Before-Afterコマンドの例:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/5f5a0841-312a-bbcf-d0a2-df68ef0c8a40.png)

# まとめ: 変数関係で変なエラーがでない
以上からわかる通り、AAでは変数の操作も簡単に行うことができ、エラーが出て止まることもないので初心者でも簡単にアクションリストを組み立てていくことが可能なのです！

[Automation Anywhere Community Edition (AACE) もぜひ使ってみてください！](https://www.automationanywhere.com/lp/community-edition)