英語版のブログはこちらをクリックしてください

Automation Anywhere でList変数、Array変数を使う

2019年 11月 26日 オートメーション・エニウェアニュース 執筆: Shinichi Komeda

概要

Automation Anywhere では通常の変数 (Value) のほかに、List (1次元)とArray (2次元)があります。ただし、特にListは、通常のプログラミング言語の1次元配列とは使い勝手が違うので、解説したいと思います。

List変数の特徴

Automation AnywhereにおけるList型変数は、複数の値をリストとして保持して1つずつ取得できます。データの1次元配列に似ています。ただし、通常の配列変数のように引数に数字を指定してn番目の値を取り出す、という使い方ではなく、リストから1つずつ順番に値を取り出すことが想定されています。各要素には番号付けがされていません。変数の命名規則1では、$lstList$のように"lst"を前につけます。

どんな場面で使えるのか?

ユーザーシナリオとしては以下のようなことが考えられます。

  • メールアドレスのリストを保持 → 一斉にメールを送る
  • Webアドレスのリスト → Webスクレイピングを一斉に行う
  • ループ内で利用する値のリスト

LOOPコマンドでの要素の列挙

List変数を生かすことができるコマンドのひとつにLOOPがあります。

Loop

LOOPの条件として、List変数を指定しておくと、ループの中で参照するList変数は要素を1つ返します。たとえば以下のアクションリストを作成します。LOOPコマンドを追加した後、単純にMessage BoxコマンドでList変数の中身を表示するものです。

List-variables

ここで$my-list-variable$には、以下の値が入っています。
my-value-1
my-value-2
my-value-3
my-value-4
my-value-5

すると、以下のようなメッセージボックスが順番に表示されます。

List

List変数を引数に持つコマンド

下記の他にもパラメータ指定ダイアログボックスの中のテキストボックスでF2を押すことで入力できる変数の候補にList変数が含まれる場合があります。

  • Clipboard - Assign To Clipboard
  • If/Else - Variable
  • Loop - List

List変数を出力するコマンド

  • Active Directory - Search
  • Excel - Find/Replace
  • Prompt - Prompt for File
  • String Operation - Split
  • Variable Operation

Array変数の特徴

Automation AnywhereにおけるArray型変数は、通常のプログラミング言語における配列型変数と近いです。配列の引数に指定できるインデックスは1から始まります。変数の命名規則1では"arr"を前につけ、$arrTable(1,3)$のような形で表現します。列数は$ArrayColumns($$)$、行数は$ArrayRows($$)$を参照することで取得できます。

どんな場面で使えるのか?

複数の要素を持つ値をやり取りする様々なシーンで活用ができます。ユーザーシナリオとしては以下のようなことが考えられます。

  • Webページからデータを抽出する
  • Excel スプレッドシートまたはデータベースから、大量の行を含むデータを抽出する
  • レガシー システム、ERP システム、または他のアプリケーションとの間でデータの読み書きを行う
  • Excel からデータベースへと、さまざまなフィールドを含む注文フォームに入力する

初期化時にテキスト/Excel/CSV/データベースから値を読み込む

変数マネージャでArray変数を作成する際に、初期化の手段を以下の4種類から選択できます。

  1. Value (値を直接指定)
  2. Read from text file (テキストファイルから読み込み)
  3. Read from excel/csv file (Excel/CSVファイルから読み込み)
  4. Read from database (データベースから読み込み)

それぞれ、初期化をするためのユーザーインターフェイスがあります。

1. Value (値を直接指定)

配列の行、列の最大サイズを数字で指定します。データはスプレッドシートのようなダイアログボックスのインターフェイスで、画面上で要素を指定します。

Value

2. Read from text file (テキストファイルから読み込み)

要素がカンマ区切りと改行で仕切られたテキスト形式のデータファイルを読み込んで初期化します。配列の行、列のサイズはデータから決定されます。

Read from text file

3. Read from excel/csv file (Excel/CSVファイルから読み込み)

ExcelファイルもしくはCSVファイルを読み込んで初期化します。シートの中から読み込むデータの範囲を選択するオプションがいくつかあります。配列の行、列のサイズはデータから決定されます。

Read from excel/csv file

4. Read from database (データベースから読み込み)

ODBCの接続文字列を使って接続するデータベース (Microsoft Access, SQL Server, Oracle Database等)からデータを取ってきます。データ取得のためのSQL文を指定することができます。配列の行、列のサイズはデータから決定されます。

Read from database

特筆すべきは、ここでどの手段で初期化したかにより、後でVariable Operationコマンドで値をまとめて再初期化する際に、初期化を行った方法での再初期化が可能だということです。つまり、Array変数は厳密にいうとさらに上記の4種類に分かれていることになります。(変数マネージャで、それぞれのArray変数のOptionを見ると、種類がわかります。)

Variable Operation

Variable Operationコマンドを使用したときの、各Array変数を再初期化しようとしたときのユーザーインターフェイスは、初期化の時と同じ画面となります。

Variable Operation

1. Value (値を直接指定)

array-ariable

2. Read from text file (テキストファイルから読み込み)

array-variable

3. Read from excel/csv file (Excel/CSVファイルから読み込み)

array-variable

4. Read from database (データベースから読み込み)

array-variable

Array変数を引数に持つコマンド

下記の他にもパラメータ指定ダイアログボックスの中のテキストボックスでF2を押すことで入力できる変数の候補にArray変数が含まれる場合があります。

  • Clipboard - Assign To Clipboard
  • If/Else - Variable
  • Task - Run Task

Array変数を出力するコマンド

Array変数は通常の変数を受け付けるコマンドには、ほとんどの場合選択肢として表示されます。太字のものは通常の変数は指定できずArray変数のみを受け付けるものです。

  • Clipboard - Assign To Clipboard
  • Clipboard - Assign From Clipboard
  • Error Handling - Begin Error Handling
  • Excel - Get Cells
  • OCR
  • Printers - Get Default Printer
  • Prompt - Prompt for Value
  • Prompt - Prompt for Yes/No
  • Prompt - Prompt for Folder
  • Services - Get Service Status
  • SNMP - Get or Get Next or Walk
  • SOAP Web Service
  • String Operation (Split以外)
  • Task - Run Task
  • Terminal Emulator - Get All Fields
  • Variable Operation
  • Web Recorder - Execute JavaScript Function
  • Window Actions - Get Active Window Title
  • XML - Get Node(s) or Execute XPath Function or Validate XML Document or Save Session Data

参考記事