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

C&S ENGINEER VOICE

Automation Anywhere - 変数

AI/RPA
2019.09.12

RPAに限らず、プログラミングを勉強しようとするときの
最初の難関が変数ではないでしょうか?

変数の一般的な考え方と、
Automation Anywhereの変数について、ご紹介します。

※本記事はAutomation Anywhere Enterprise (RPA) v11.3.xについての内容になります。


目次

1. 変数って何?
2. Automation Anywhereの変数
3. Automation Anywhere ユーザー変数
4. Automation Anywhere システム変数
5. 変数の使い方
6. まとめ


1. 変数って何?

変数とは、一般的にはこんな感じで説明されています。

IT用語辞典 e-Words > 変数
http://e-words.jp/w/%E5%A4%89%E6%95%B0.html

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 > 変数
https://wa3.i-3-i.info/word1603.html

これを読んで、「もうバッチリわかったよ!」という方は、このパートは読まなくて大丈夫です。
全然イメージわかない。。。という方に向けて、違った方面から解説してみたいと思います。

まず、ロボットを作ることを考えてみましょう。
RPAのロボットはパソコンの中のことしかやってくれませんが、
わかりやすくするために、家の中で使うロボットで考えてみます。

具体的に言うと、冷蔵庫からお水を取ってくるロボットを作ります。
ロボット1号です。

Variables1.png

うまく完成して、しばらくの間は毎回ロボット1号を使っていますが、
お水じゃなくてお茶が飲みたくなったので、お茶を取ってくるロボット2号を作りました。
さらにジュースを取ってくるロボット3号も作りました。

飲みたいものに合わせて、それぞれのロボットのスイッチをぽちっとすると持ってきてくれます。

Variables2.png

でも、このまま取ってくるものを変えるたびにロボットを増やしてたら大変ですよね?
将来、冷蔵庫を買い替えたり、置き場所を変えたら、
それまでに作っていたロボットを全部修正しなくてはいけないですし。

そんなときに、ロボットを作る人をラクにしてくれるのが変数なのです。
例えば、「何を」の部分を[飲み物]という変数にしてみます。

Variables3.png

こうしておけば、飲み物の種類が増えるたびにロボットを作らなくても、
冷蔵庫まで行って帰ってくるところは共通にして、
飲み物を選ぶところだけ、パターンを増やせばよくなります。

こんな感じで、ほとんどの変数はロボットを作る人、
つまりプログラミングをする人がラクをするために使います。
例えば毎月同じ処理をする場合にも、12ヵ月分のロボットを作る必要はなく、
何年何月のデータを対象にします、という部分を変数にすれば
1つのロボットで済むようになります。

ただし、1つ注意点があって、
今までは飲みたいものに合わせて、該当ロボットを起動すればよかったのですが、
変数を使って1つにまとめてしまった場合は、
毎回起動するときに、今回取ってくる飲み物を指定してあげなくはいけなくなります。

Variables4.png

名前が「変"数"」となっているので、数値じゃないとダメなの?
と思われるかもしれませんが、ほぼ何でも変数にすることができます。
英語では「Variables」なので"数"の意味はなく、変われるものという感じです。
実際にプログラムを動かすときには、何かに決まるけど、
作っているときは決められないので、仮置きするための仕組みです。

飲み物の種類を表すような文字列だけでなく、数値、日付のようなもの、
それからExcelファイル丸ごとだって変数にすることができます。

例えば、「C:\aaaaa\bbbbb\ccccc\ddddd\sample_yyyymmdd.xlsx」というファイルを使いたい場合、
日付部分(yyyymmdd)が毎回変わっても変数を使えば大丈夫です。
さらに、1つのセルを見る度にそこまでファイルを探しに行っていたら大変ですよね。
でも、このExcelを一度開いた後、変数に入れてしまえば、
毎回遠くまで見に行く必要がなくなり、すぐに見ることができるようになります。
(コンピューターの中でのお話ですが)

まとめると、変数とは、ほとんど同じなんだけど、一部分だけ違う
というプログラムやロボットを作るときに、
違うところを仮の情報で作りあげるために使用するものと考えるとよいと思います。


2. Automation Anywhereの変数

Automation Anywhereでは、変数にいくつかの種類があります。
大きく、ユーザー変数とシステム変数に分かれていて、
ユーザー変数には、さらにローカル変数とアナリティクス変数があります。

ただ、アナリティクス変数はほとんど使わないので、
一般的にはユーザー変数=ローカル変数と思われています。

変数種類 説明
ユーザー変数 ユーザーによって作成され、特定のタスクまたは一連のタスクで使用されます。
ユーザー変数には単一の値または複数の値を保持できます。
Automation Anywhereでは、事前定義された 2 つのユーザー変数が用意されています。
ローカル変数 特定のタスク用に作成される変数です。
アナリティクス変数 分析データを収集するために作成される変数です。
システム変数 システム変数は、Automation Anywhereで用意されている事前定義済みの変数です。
すべてのオートメーション タスクで使用できます。

 

また、一般的なプログラミングでは、
変数のデータ型を何にすればよいかが悩みどころですが、
Automation Anywhereでは、データ型というのはなく、以下の4つのタイプしかないので、
ほとんど迷うことがありません。

変数タイプ 説明
Value 単一の値をもつ場合
List 複数の値をもつ場合(一次元)
Array 複数の値をもつ場合(二次元)
Random ランダムな値をもつ場合(文字列または数値)

 

 

 

 

ValueタイプとListタイプは、ファイルから値を読み込むこともできます。
ArrayタイプはExcelをイメージしてもらえればいいと思います。行と列があるものです。


3. Automation Anywhere ユーザー変数

ユーザー変数は、一般的なプログラミングでの変数のように、
自分で自由に作成することができます。

また、Automation Anywhereではあらかじめ用意されたユーザー変数もあります。
わざわざ名前を決めるほどでもない、ちょっと使いたいだけの場合は、
こちらを使えるので便利です。

Valueタイプは「Prompt-Assignment」、Listタイプは「my-list-variable」となっています。

ユーザー変数の作り方

ユーザー変数を作るには、
ワークベンチの右側に、[変数マネージャー]というパネルがありますので、
こちらを表示して、下の方にある[追加]をクリックします。

UserVariables1.png

以下のような画面が表示されるので、ここで内容を設定していきます。

UserVariables2.png

必要項目を設定して[保存]ボタンをクリックすると、[変数マネージャー]に追加されますが、
Taskの[プロパティ]-[アナリティクス]にて、チェックをしているかどうかによって
追加されるところが変わります。

UserVariables3.png

チェックしていれば[Analytics Variables]の配下へ、
チェックしていなければ[Local Variables]の配下へ追加されます。

UserVariables4.png


4. Automation Anywhere システム変数

RPAも含めた、プログラムを作る際に必要となってくる変数ですが、
普通のプログラミングでは、毎回イチから作らなくてはいけないのがかなり面倒です。

Automation Anywhereでは、あらかじめよく使われるものが
システム変数として用意されているのが便利なところです。

あらかじめ用意されているものなので、自分で追加することはできません。

システム変数の確認方法

どんなシステム変数があるかを確認するには、
ワークベンチの右側に、[変数マネージャー]というパネルがありますので、
こちらを表示して、下の方にある[システム変数を表示]をクリックします。

SystemVariables1.png

そうすると、以下のような画面が表示されます。
[Caption]欄の+アイコンをクリックすることで、
それぞれのカテゴリーに属するシステム変数を見ることができます。

SystemVariables2.png

システム変数の概要

システム変数には以下のものがあります。

Date/Time

システム日付に関連する変数です。
システム日付とはそのプログラムが参照している現在時刻のことです。
「Date」以外は前ゼロ埋めしてくれないので、
例えば「Month」では1月は「01」ではなく「1」になります。

Caption Description
Date システム日付(設定された形式)
Year システム日付の年
Month システム日付の月
Day システム日付の日
Hour システム日付の時
Minute システム日付の分
Second システム日付の秒
Millisecond システム日付のミリ秒

 

 

 

 

 

 

 

※システム日付の形式は、以下で設定変更できます。

DateFormat.png

Loop
Loopコマンドで使用可能です。

Caption Description
Counter 現在何番目を処理しているか。
FileName Each File In A Folderサブコマンドで使用可能。ファイル名。
FolderName Each Folder In A Folderサブコマンドで使用可能。フォルダ名。
CurrentDirectory Each File In A Folder/Each Folder In A Folderサブコマンドで使用可能。現在のフォルダパス。
Extension Each File In A Folderサブコマンドで使用可能。ファイルの拡張子。
Dataset Column Each Ro In A SQL Query Datasetサブコマンドで使用可能。データセットの1行のデータ。
Table Column Each Row In An Internet Explorer Tableサブコマンドで使用可能。表の1行のデータ。
Excel Column Each Row In An Excel Datasetサブコマンドで使用可能。Excelの1行のデータ。
Filedata Column Each Row In A CSV/Text Fileサブコマンドで使用可能。ファイルの1行のデータ。
XML Data Node Each Node In An XML Datasetサブコマンドで使用可能。ファイルの1ノードのデータ。

 

Task内のどこでも使用可能です。

Caption Description
Error Line Number エラーが発生したアクションリストの行の番号。
Error Description エラーが発生したアクションリストの行の説明。

 

 

 

Excel

Caption Description
Excel Cell ExcellコマンドのOpen Spreadsheetサブコマンドで、[ヘッダーを含む]チェックボックスが有効になっている場合に使用可能。ヘッダーからのセルの列名と位置。
Excel Cell Column 操作が実行されたExcelの列。
Excel Cell Row 操作が実行されたExcelの行。

 

 

 

 

 

Email
LoopコマンドのEach Email Message On Mail Serverサブコマンドで使用可能です。

Caption Description
Email From 差出人メールアドレス。
Email To 宛先TOメールアドレス。
Email Cc 宛先CCメールアドレス。
Email Subject メール件名。
Email Message メール内容。
Email Received Date 受信日。
Email Received Time 受信時刻。

 

 

 

 

 

 

Trigger

Caption Description
Trigger Value AA Enterprise Clientでトリガを設定している場合に使用可能。トリガが発生したファイル/フォルダ/ウィンドウの名前。

 

 

 

PDF
PDF Integrationコマンドで使用可能です。

Caption Description
PDFFileName 拡張子なしファイル名。
PDFTitle タイトル。
PDFAuthor 作成者名。
PDFSubject 件名。

 

 

 

 

System
特定のクライアントマシンに固有のシステム設定などに関する変数です。

Caption Description
Machine マシン名。
Clipboard クリップボードにコピーされているテキストデータ。
System (Name) システム名。Nameには以下が設定可能。
Path
SESSIONNAME
PATHEXT
USERDOMAIN
PROCESSOR
ARCHITECTURE
ProgramW6432
DriverData
PUBLIC
APPDATA
windir
LOCALAPPDATA
CommonProgramW6432
USERDNSDOMAIN
TMP
USERDOMAIN_ROAMINGPROFILE
USERPROFILE
ProgramFiles
PROCESSOR_LEVEL
CommonProgramFiles(x86)
HOMEPATH
COMPUTERNAME
PROCESSOR_ARCHITEW6432
USERNAME
NUMBER_OF_PROCESSORS
PROCESSOR_IDENTIFER
TEMP
SystemRoot
ComSpec
LOGONSERVER
FPS_BROWSER_USER_PROFILE_STRING
ProgramFiles(x86)
CommonProgramFiles
FPS_BROWSER_APP_PROFILE_STRING
PROCESSOR_REVISION
PSModulePath
ALLUSERPROFILE
SystemDrive
OS
ProgramData
HOMEDRIVE
AAApplicationPath Automation Anywhereのアプリケーションパス。
AAInstallationPath Automation Anywhereのインストールパス。
AATaskName 実行中のタスクの名前とそのパス。
AATaskExecutor(Name) タスクを実行したユーザーの情報。Nameには以下が設定可能。
Invoker_UserName
Invoker_FirstName
Invoker_LastName
Invoker_Email
Executor_UserName
Executor_FirstName
Executor_LastName
Executor_Email
Execution_Type
AAControlRoom ボットが接続されたControl RoomのURL。
CPUUsage CPU使用量(パーセンテージ)。
RAMUsage RAM使用量の統計値(MB単位)。
TotalRAM RAMの総容量(MB単位)。
OSName オペレーティングシステム名。
ArrayRows 指定したArrayタイプ変数の行数。
ArrayColumns 指定したArrayタイプ変数の列数。
WorkItem 現在のWorkItem。
WorkItemResult WorkloadコマンドのSet Work Item Resultサブコマンドで使用可能。作業項目の結果に設定された値。

 

Cognitive Data

Caption Description
Is Cognitive Capture Success Captureが成功したかどうか。

 

 


5. 変数の使い方

システム変数「Date」をメッセージボックスで表示してみましょう。

ワークベンチにMessage Boxコマンドを追加します。

MessageBox1.png

画面内に「ヒント F2で変数を挿入」と書かれているところが2ヵ所ありますね。
今回は[ユーザーに表示するメッセージを入力]を一度クリックしてから、
F2キーを押してみてください。

MessageBox2.png

ここで使用できる変数の一覧が表示されますので、ここから選べばOKです。
青字の「$Variables$」はユーザー変数、「$System Variables$」はシステム変数です。
「Date」を探して選択してダブルクリックするか[Insert]ボタンをクリックします。

MessageBox3.png

Message Boxコマンドを保存して、さらにTaskも保存してから実行してみましょう。
設定してある形式で表示されます。

MessageBox4.png


6. まとめ

RPAを作るには必ず越えなければならない変数の壁、
越えられそうな気分になれたでしょうか?

すでにプログラミングのスキルがある方や、他のRPA製品を使ったことのある方には、
Automation Anywhereの変数が、
かなり特長的なことがお分かりいただけたのではないかと思います。

他のおすすめ記事はこちら

著者紹介

先端技術推進統括部
RPAビジネス推進室
西尾 玲