RPAに限らず、プログラミングを勉強しようとするときの
最初の難関が変数ではないでしょうか?
変数の一般的な考え方と、
Automation Anywhereの変数について、ご紹介します。
※本記事はAutomation Anywhere Enterprise (RPA) v11.3.xについての内容になります。
本記事はv11を使用した内容となっております。 A360(A2019)を使用した記事は以下をご参照ください。 Automation Anywhere -【A2019】変数 |
目次
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号です。
うまく完成して、しばらくの間は毎回ロボット1号を使っていますが、
お水じゃなくてお茶が飲みたくなったので、お茶を取ってくるロボット2号を作りました。
さらにジュースを取ってくるロボット3号も作りました。
飲みたいものに合わせて、それぞれのロボットのスイッチをぽちっとすると持ってきてくれます。
でも、このまま取ってくるものを変えるたびにロボットを増やしてたら大変ですよね?
将来、冷蔵庫を買い替えたり、置き場所を変えたら、
それまでに作っていたロボットを全部修正しなくてはいけないですし。
そんなときに、ロボットを作る人をラクにしてくれるのが変数なのです。
例えば、「何を」の部分を[飲み物]という変数にしてみます。
こうしておけば、飲み物の種類が増えるたびにロボットを作らなくても、
冷蔵庫まで行って帰ってくるところは共通にして、
飲み物を選ぶところだけ、パターンを増やせばよくなります。
こんな感じで、ほとんどの変数はロボットを作る人、
つまりプログラミングをする人がラクをするために使います。
例えば毎月同じ処理をする場合にも、12ヵ月分のロボットを作る必要はなく、
何年何月のデータを対象にします、という部分を変数にすれば
1つのロボットで済むようになります。
ただし、1つ注意点があって、
今までは飲みたいものに合わせて、該当ロボットを起動すればよかったのですが、
変数を使って1つにまとめてしまった場合は、
毎回起動するときに、今回取ってくる飲み物を指定してあげなくはいけなくなります。
名前が「変"数"」となっているので、数値じゃないとダメなの?
と思われるかもしれませんが、ほぼ何でも変数にすることができます。
英語では「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」となっています。
ユーザー変数の作り方
ユーザー変数を作るには、
ワークベンチの右側に、[変数マネージャー]というパネルがありますので、
こちらを表示して、下の方にある[追加]をクリックします。
以下のような画面が表示されるので、ここで内容を設定していきます。
必要項目を設定して[保存]ボタンをクリックすると、[変数マネージャー]に追加されますが、
Taskの[プロパティ]-[アナリティクス]にて、チェックをしているかどうかによって
追加されるところが変わります。
チェックしていれば[Analytics Variables]の配下へ、
チェックしていなければ[Local Variables]の配下へ追加されます。
4. Automation Anywhere システム変数
RPAも含めた、プログラムを作る際に必要となってくる変数ですが、
普通のプログラミングでは、毎回イチから作らなくてはいけないのがかなり面倒です。
Automation Anywhereでは、あらかじめよく使われるものが
システム変数として用意されているのが便利なところです。
あらかじめ用意されているものなので、自分で追加することはできません。
システム変数の確認方法
どんなシステム変数があるかを確認するには、
ワークベンチの右側に、[変数マネージャー]というパネルがありますので、
こちらを表示して、下の方にある[システム変数を表示]をクリックします。
そうすると、以下のような画面が表示されます。
[Caption]欄の+アイコンをクリックすることで、
それぞれのカテゴリーに属するシステム変数を見ることができます。
システム変数の概要
システム変数には以下のものがあります。
Date/Time
システム日付に関連する変数です。
システム日付とはそのプログラムが参照している現在時刻のことです。
「Date」以外は前ゼロ埋めしてくれないので、
例えば「Month」では1月は「01」ではなく「1」になります。
Caption | Description |
Date | システム日付(設定された形式) |
Year | システム日付の年 |
Month | システム日付の月 |
Day | システム日付の日 |
Hour | システム日付の時 |
Minute | システム日付の分 |
Second | システム日付の秒 |
Millisecond | システム日付のミリ秒 |
※システム日付の形式は、以下で設定変更できます。
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コマンドを追加します。
画面内に「ヒント F2で変数を挿入」と書かれているところが2ヵ所ありますね。
今回は[ユーザーに表示するメッセージを入力]を一度クリックしてから、
F2キーを押してみてください。
ここで使用できる変数の一覧が表示されますので、ここから選べばOKです。
青字の「$Variables$」はユーザー変数、「$System Variables$」はシステム変数です。
「Date」を探して選択してダブルクリックするか[Insert]ボタンをクリックします。
Message Boxコマンドを保存して、さらにTaskも保存してから実行してみましょう。
設定してある形式で表示されます。
6. まとめ
RPAを作るには必ず越えなければならない変数の壁、
越えられそうな気分になれたでしょうか?
すでにプログラミングのスキルがある方や、他のRPA製品を使ったことのある方には、
Automation Anywhereの変数が、
かなり特長的なことがお分かりいただけたのではないかと思います。
他のおすすめ記事はこちら
著者紹介
先端技術推進統括部
RPAビジネス推進部
西尾 玲