RPA初心者向け講座❹
第3回例題の課題
前回の「繰り返し操作とカウントアップ」において、シンプルな例題として、テストファイルのSheet1にA列の1行目から10行目までに1から10までの数字が入っており、これをWinActorの繰り返し操作を使って、自動的にSheet2のB列の1行目から10行目までに書き写す操作についてシナリオ作成を試みました。
シナリオとしては、きちんと動作するので特段の問題はない訳ですが、実際のWinActorの動作を少し詳しく見ると、繰り返し操作においては、
【繰り返し操作1回目】Excel操作(値の取得2)によりSheet1のセル位置A1から情報「1」を取得、Excel操作(値の設定2)にて、Sheet2のセル位置B1に取得情報「1」を設定し、カウントアップで変数「セルの行」の値に1を加えて次の繰り返しに進みます。
【繰り返し操作2回目】Excel操作(値の取得2)によりSheet1のセル位置A2から情報「2」を取得、Excel操作(値の設定2)にて、Sheet2のセル位置B2に取得情報「2」を設定し、カウントアップで変数「セルの行」の値に1を加えて次の繰り返しに進みます。
【繰り返し操作3回目】Excel操作(値の取得2)によりSheet1のセル位置A3から情報「3」を取得、Excel操作(値の設定2)にて、Sheet2のセル位置B3に取得情報「3」を設定し、カウントアップで変数「セルの行」の値に1を加えて次の繰り返しに進みます。
・・・と進んでいく訳ですが、何か気づきませんか? そうです。Sheet1とSheet2の間を行ったり来たりしながら作業が進んでいきます。人間の動作であれば、このような非効率なことはしないと思います。最初にSheet1のA列1行目から10行目までに入力されている1から10までの数字の情報をすべて取得してから、Sheet2のB列1行目から10行目までに1から10までの数字の情報を設定すると思います。
要するに、一つの変数「取得情報」を用いて、情報のやり取りを行っていることに起因します。そうすると「では変数を10個にすればよいのでは?」となりますが、「取得情報1」「取得情報2」「取得情報3」・・・と設定するのも何か大変な感じがします。そこで、役に立つのが「配列操作」です。
配列とは何か?
WinActorにおける配列操作の説明を行う前に「配列とは何か?」について説明いたします。
「配列」は、変数の箱を並べたイメージで考えるとわかりやすいと思います。一直線に並べたものが「1次元配列」、平面的に並べたものが「2次元配列」です。変数だけを使って10個の変数を準備しようとすると、先ほど説明したとおり、「取得情報1」「取得情報2」「取得情報3」・・・と設定する必要がありますが、配列を使用すると、例えば、名称を「配列」とすれば、1次元配列の場合、自動的に「配列[1]」「配列[2]」「配列[3]」「配列[4]」・・・と番号を振ってくれるので、手作業での設定を省くことができます。
1次元配列操作
配列操作の選択
WinActor画面上部の選択バーから「ライブラリ」を選ぶと、その中で「03_変数→02_辞書と配列」と進むと、配列操作がいろいろと準備されています。
配列操作には、1次元配列操作と2次元配列操作の2種類あることがわかりますが、ここでは、簡単な1次元配列操作について説明します。赤枠で囲ったところをご覧ください。「1次元配列操作(初期化)」「1次元配列操作(情報取得)」「1次元配列操作(情報更新)」の3種類あります。
1次元配列操作(初期化)
配列操作を行うときには、必ず配列操作(初期化)が必要とされています。要するに「リセット」ですね。最初に、配列のリセットが必要であると覚えていただくだけでOKです。
シナリオ作成エリアでプロパティ画面を開くと左図の画面が現れます。変数を設定する箇所などは何もありません。シナリオ中の必要なところに配置すればOKです。簡単ですね。
配列操作による情報の流れ
Excel操作の場合においては、エクセル上のデータをWinActorの変数に情報取得する場合には、Excel操作(値の取得)又は(値の取得2)を使い、WinActorが取得した情報をエクセル上に設定するときには、Excel操作(値の設定)又は(値の設定2)を使いました。
さて、1次元配列操作では、1次元配列操作(情報更新)と1次元配列操作(情報取得)がありますが、情報の流れがわかりにくいですよね。
重要なポイントは、配列操作については直接エクセルと情報の受け渡しをするのではなく、WinActor上の変数との間で、情報の受け渡しを行うところです。つまり、次の図のようなイメージで情報の受け渡しが行われます。
WinActor上に設定した「変数A」から配列[x]に情報を伝達して配列[x]の情報を更新する操作のことを「1次元配列操作(情報更新)」と言います。情報は、変数から配列へと伝達されます。
一方、配列[x]から情報を取得し、WinActor上に設定した「変数B」に情報を伝達する操作のことを「1次元配列操作(情報取得)」と言います。情報は、配列から変数へと伝達されます。
変数の場合においては、情報を変数に入れる際が「値の取得」、情報を取り出し、どこかに置く際に「値の設定」という呼び方をしていますが、配列では、配列が持つ情報を変数に入れる操作のことを「情報取得」と呼んでいます。用語の定義が紛らわしいので、わかりにくいと思いますが、結局は配列よりも変数に着目し、変数が配列から情報を取得するので「情報取得」と呼んでいるみたいです。
ところで、折角の機会なので、変数や配列について、より正確に理解していただくために、念のため申し上げておきますが、情報の流れを示す上述の2つの図においては、黄色のボールの情報が伝達されていく様子を示していますが、よく見ていただくと、黄色のボールは次々に移っていくのではなくて、次々とコピーされて箱の中に入って行っています。つまり、WinActorにおける情報の伝達は、操作の過程に従って、情報(黄色のボール)が移動しているのではなく、まるで複製が増えていくように情報がコピーされていくところが重要です。情報の伝達が行われても、情報の提供元にはその情報が残っていることをお忘れなく!
したがって、配列操作においては、変数から配列に情報を伝達する操作のことを「情報更新」と呼んでいます。配列の箱の中は、初期化によって空箱になっていますが、その後の操作で情報がその都度、変数から伝達されて更新されていますよというイメージです。
1次元配列操作(情報更新)
次に、「1次元配列操作(情報更新)」について説明します。「何? そもそも配列って何かまだよくわからない?」ということですか。まあ、気にせず、このプロパティ画面を見てください。
左図の赤枠をご覧いただくと、「1次元配列の指定インデックスの情報を更新します。指定インデックスに情報がない場合、指定インデックスに情報を設定します」と記載されています。何を書いているのか、さっぱりわかりませんね。WinActorは国産だと聞いていますが、これを作った方はどこの国の人なのでしょうね?ははは。
要するに、1次元配列操作(情報更新)を行う際には「配列名」「インデックス」「情報」の3つを指定する必要があるということです。
配列名は、配列で使用する箱の名称です。イメージ図では、箱の名称を「配列」としていました。変数の場合と同様に、名称は何でもOKです。わかりやすい名称を付けてください。
インデックスは「配列[1]」「配列[2]」「配列[3]」「配列[4]」・・・と番号を振っている番号のことです。同じ配列名でも番号ごとに箱が違いますので、このインデックスを用いて識別します。
情報の欄には、配列[x]に情報を伝達する変数名を登録します。上述のイメージ図であれば「変数A」となります。
1次元配列操作(情報取得)
最後に、「1次元配列操作(情報取得)」について説明します。
このプロパティ画面を開くと「配列名」「インデックス」「取得情報」の3種類を登録します。取得情報の欄には、配列[x]から情報を取得する変数名を登録します。上述のイメージ図であれば「変数B」となります。
これらのプロパティ画面での設定を踏まえた上でもう一度、情報が配列と変数との間で伝達されるイメージ図をご覧ください。最初にご覧いただいたときよりも流れが鮮明に見えてきたのではないでしょうか?
皆さま、今回の勉強はここまでです。
配列操作の基本はご理解いただけましたか?
次回は、配列操作を使ったシナリオ作成について説明いたします。