SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

Automation Anywhere -【A2019】変数

Automation Anywhere
2020.02.26

A2019 の変数
前回の記事では、Bot 編集画面の各コンポーネントと基本的な操作方法を確認しました。
しかし、前回の手順でレコーディングした Bot をそのまま運用で使えるということはあまりなく、多くの場合は様々な手直しが必要になるでしょう。
今回の記事では、恐らくその最初のステップになる「値の変数化」を取り上げます。
※本記事は、Automation Anywhere A2019 ビルドバージョン 2545 時点での情報です。


□目次

  1. Automation Anywhere A2019 の変数
  2. 変数を作る
  3. 変数を使う
    3-1. アクションへのインプット
    3-2. アクションからのアウトプット
  4. 実践編
    4-1. 変数に値を代入する
    4-2. 文字列⇔非文字列の変換
  5. おわりに

1. Automation Anywhere A2019 の変数

そもそも変数とは何か、なぜ変数が必要なのか、といったことは、以前の記事で詳しく紹介されています。
以前の記事は Automation Anywhere V11.3.x にフォーカスしていますが、変数とは何かに関する基本的な考え方は、A2019 においても同様です。
しかし、実際に Automation Anywhere で変数を使うにあたってのアーキテクチャは A2019 で大きく変わっています。本記事では、この点にフォーカスします。

V11 以前の Automation Anywhere では、変数の「型」が限られており、選択に迷うことはほぼありませんでした。これに対し、A2019 では 11 種類の型が用意されています。

説明対応するパッケージ
任意 型を明示せず、Automation Anywhere が自動的に型を判断します
主に[Task Bot]パッケージ >[Run]アクションで、子 Bot から
値を受け取る際に使用します
-
文字列 文字列データを扱います 文字列
数字 数値データを扱います Number
日時 日時のデータを扱います 日時
Boolean 真理値データを扱います
真(True)または偽(False)のいずれかの値を取ります
Boolean
ファイル Control Room またはデバイス上のファイルを扱います -
リスト 複数の値を一次元に並べたデータ型です リスト
ディクショナリ キー(名前)と 値(データ)のペアを並べたデータ型です ディクショナリ
テーブル 複数の値を二次元(行×列)に並べたデータ型です Data Table
レコード テーブルの中の一行を扱います -
ウィンドウ アプリケーションのウィンドウを扱います ウィンドウ

各パッケージのアクションが使用できるデータ型は、厳格に定められています。例えば、[メッセージボックス]パッケージ >[メッセージボックス]アクションが表示できるメッセージは、文字列型データのみです。
「対応するパッケージ」には、代入や演算といった、その型のデータ操作に特化したアクションが用意されています。

種類

Automation Anywhere で使われる全ての変数は、上記の型に則って扱われます。
Automation Anywhere の変数には、大きく次の 2 種類があります。

  1. システム変数
  2. ユーザー定義変数

1. システム変数
Automation Anywhere があらかじめ用意している変数です。 ユーザーが追加/削除することはできません。 システム変数は、更に次の 3 種類に分けられます。

  1. クリップボード
    クリップボードの値を保持するため、次の変数が用意されています。
    変数名説明
    Clipboard 文字列 クリップボードの値を扱います
  2. System
    Bot が実行されているデバイスに関わる値を扱います。
    変数名説明
    Date 日時 システムの日時です
    Year 数字 システム日時の年です
    Month 数字 システム日時の月です
    Day 数字 システム日時の日です
    Hour 数字 システム日時の時間です
    Minute 数字 システム日時の分です
    Second 数字 システム日時の秒です
    Millisecond 数字 システム日時のミリ秒です
    Machine 文字列 デバイスの コンピュータ 名です
    AAControlRoom 文字列 Control Room の URL です
    OSName 文字列 デバイスの OS 名です
    TotalRAM 数字 デバイスの RAM 容量です
    RAMUsage 数字 デバイスの RAM 使用量です
  3. 文字列
    次の文字列を扱います。
    変数名説明
    Enter 文字列 改行文字です
    Separater 文字列 区切り文字として < sep > を挿入します
    Tab 文字列 タブ文字です

2. ユーザー定義変数
ユーザーが追加する変数です。
あらかじめ次の変数が用意されています。

変数名説明
prompt-assignment 文字列 一時的に値を割り当てたい場合などに使用できます


2. 変数を作る

ユーザー定義変数を追加するには、次の操作を行います。

  1. アクションパネルと同じペインにある[変数]タブで[+]をクリックします
    CreateVar.png
  2. 表示された[変数を作成]ダイアログで必要な項目を設定し、[作成]をクリックします
    PopupForVar.png
    ① 変数名を設定します(必須) ※同名の変数を複数作成することはできません
    ② 変数の説明を設定します(任意)
    ③ 変数を定数として使用したい、つまり Bot 内ではその変数の参照のみ許可し編集を許可しない、
      という場合はこのボックスにチェックを入れます
      ※⑥の型が「任意」の場合、チェックを入れられません
    ④と⑤は、その Bot を他の Bot から呼び出す([Task Bot]パッケージ >[Run]アクションを
      使用する)際、Bot 間で値のやり取りを行いたい場合にチェックを入れます
      ④ 呼び出し元 Bot から、その変数に値を渡したい場合は、このボックスにチェックを入れます
      ⑤ 呼び出し元 Bot に、その変数の値を渡したい場合は、このボックスにチェックを入れます
      ※チェックを入れることで、呼び出し元の Bot から、その変数が見えるようになります
      ※⑥の型が「任意」の場合、チェックを入れられません
    ⑥ 変数の型を設定します(必須)
    ⑦デフォルト値を設定します(任意)
      ※⑥の型によって、設定フォーマットが変わります
      ※⑥の型が「任意」の場合、設定できません

追加した変数は、変数タブに一覧表示されます。
EditVar.png

  • 変数の型に応じて異なるアイコンが表示されます
  • 変数を修正するには、右端の三点リーダから[変数を編集]メニューを選択します
    変数の[名前]および[タイプ](型)を後から編集することはできません
    これらを変える必要が生じた場合は、その変数を削除した上で新たに作成します


3. 変数を使う

変数の準備ができたら、実際にアクションの中で使用してみましょう。
変数がアクションに提供する機能としては、次の 2 つがあります。

  1. アクションへのインプット(アクションが使用する値を提供する)
  2. アクションからのアウトプット(アクションが出力する値の格納先を提供する)

アクションがどちらの機能を使用しているかによって、設定方法が異なります。

3-1. アクションへのインプット

例えば、[メッセージボックス]パッケージ >[メッセージボックス]アクションで表示する値を、変数で指定するような場合です。
InsertVarInProp_.png
このように、設定する際は変数を「$変数名$」で表し、次のいずれかの方法で挿入します。

  • InsertVar.pngをクリックするか F2 キーを押下し、表示されたダイアログ上で対象の変数を選択します
  • 直接変数名を入力します(「$」を入力すると、候補の変数が表示されます)

3-2. アクションからのアウトプット

例えば、CSVファイルから読み取ったデータを、テーブル型変数に格納するような場合です。
SelectVar.png
このように、プルダウンリストから格納先にしたい変数を選択します。
まだ格納先の変数を作成していなかった場合には、CreateVarInProperty.pngをクリックすると、その場で変数を作成できます。


4. 実践編

先に示した通り、Automation Anywhere A2019 では型の扱いが厳格になっていることから、V11 までは特に意識しなかった操作についても注意する必要があります。
ここでは、最も基本的な 2 つの操作を取り上げます。

4-1. 変数に値を代入する

V11 までの Variable Operation コマンドに相当する操作です。
A2019 では、対応する各パッケージにある[代入]あるいは[Assign」といったアクションを使用して、変数に代入します。

パッケージ > アクション使用イメージ(画像をクリックすると拡大します)
文字列 文字列 > 代入 代入する際、変数を他の文字列と連結できます
AssignToStrVar_.png
数字 Number > 代入 代入する際、四則演算を行えます
AssignToNumVar.png
日時 日時 > 代入 AssignToDtVar.png
Boolean Boolean > 代入 AssignToBoolVar.png
ファイル ファイル > Assign AssignToFileVar_.png
リスト リスト > 代入 AssignToListVar.png
ディクショナリ ディクショナリ > 代入 AssignToDicVar.png
テーブル Data Table > Assign AssignToTableVar.png
ウィンドウ ウィンドウ > 代入 AssignToWinVar.png

4-2. 文字列 ⇔ 非文字列の変換

例えば、ファイルから読み取った値(文字列型)を数字や日時として扱いたい(=[Number]や[日時]パッケージのアクションで使用したい)場合、明示的に数字型や日時型へ変換する必要があります。
逆に、数字型や日時型として扱っていた値をメッセージボックスやファイルにテキストとして出力したい場合は、文字列に変換する必要があります。
これらのアクションは、次のパッケージに用意されています。

文字列 → <変換先>型
変換先パッケージ > アクション
数字 文字列 > 数値に変換
日時 日時 > 代入
Boolean 文字列 > Boolean に変換
  
<変換元>型 → 文字列
変換元パッケージ > アクション
数字 Number > 文字列に変換
日時 日時 > 文字列に変換
Boolean Boolean > 文字列に変換

Practice ~日時演算
今一つ「型変換」や「型」の使い方のイメージが湧かない、というユーザー向けに、型の性質を利用した簡単な例を取り上げます。
文字列型の日時データ「2020/01/01 09:00」(2020年1月1日9:00)があるとします。この一週間後の日時(2020年1月8日9:00)を求めて、メッセージボックスに表示してみましょう。

AssignDate.png   STEP 1 文字列型→日時型の型変換
日時の演算を行うアクションは、[日時]パッケージにあります。[日時]パッケージのアクションを使うために、まずデータを日時型に変換します。
これは、[日時]パッケージの[代入]アクションで行います。

① 日時データの文字列を設定します
  変数も使用できますが、今回はリテラルで指定します
② 日時フォーマットを指定します
  ①の文字列は、このフォーマットで記述されているもの
  として読み取られます
③ 変換結果を格納する、日時型変数を指定します
Go.png
AddWeek.png STEP 2 日時の加算
STEP 1で得られた日時データの、1週間後の日時を求めます。
それには、[日時]パッケージの[追加]アクションで、1週間分の時間を加算します。

① 加算対象の日時データを指定します
  STEP 1 で得られた日時型データを使用します
② 追加する時間を1週間とします
③ 加算結果を格納する、日時型変数を指定します
Go.png
ConvertToStr.png STEP 3 日時型→文字列型の型変換
STEP 2 で得られた日時型データを、テキストとして扱うために文字列型に変換します。
これは、[日時]パッケージの[文字列に変換]アクションで行います。

① 日時型データを指定します
  STEP 2 で得られた日時型データを使用します
② 日付フォーマットを指定します
  ①の日時が、このフォーマットで文字列に変換されます
③ 変換結果を格納する、文字列型変数を指定します
Go.png
[メッセージボックス]アクションに、STEP 3 で得られた文字列型データを設定します

MsgBox.png RUN
元の日時の 1 週間後が表示されました。
今回はメッセージボックスに表示しましたが、Web サイトに入力する、といった動作にすることもできます。


5. おわりに

Automation Anywhere A2019 では、各型の特性を理解することが必要になりました。言い換えると、各型の特性を利用することで、V11 以前ではできなかったような演算も行えるようになりました。
どのアクションを使いたいか(どのような操作を自動化したいのか)、そのためにはどの型の変数を用意すれば良いか、ぜひ考えてみてください。

著者紹介

先端技術推進統括部
RPAビジネス推進部
上野 安貴