RPAコラムー第27回 Power Automate Desktopとは?(6/6)

前回までで、業務ロボットの大まかな流れを作ることが出来ました。

しかし、現在の業務ロボットは交通費精算書の一番上の情報しか取得しないため、複数件の内容には対応できません。

 

今回のコラムでは、交通費精算書の項目を複数読み込ませるための設定を紹介していきます。

複雑な処理が求められますが、できる限りわかりやすく説明していきます。

繰り返し処理① 項目数を読み取る

交通費精算書の一番上の情報を読み取るとき、「Excelワークシートから読み取り」アクションには必ず”7行目”を指定していました。

 

全てのデータを処理してもらうには、ここから一番下の項目まで全て読み取ってもらわなければなりません。

 

ただし、項目数がサンプルデータの様に11行目で終わることもあれば、外出の多い月、少ない月もあるかもしれません。

 

つまり、「先頭7行目から項目が書かれている中で一番下の行目までを読み取る」様に設定する必要があります。

 

逆に言えば、「何も書いてない行目以降は読み取らない」様に途中で止まってくれなければなりません。

 

まずは項目数に関わらず下まで読み取る設定をどのようにするかを紹介します。

最初に、準備として変数を設定します。

項目量がどれだけ増えても、一番最初に駅名が記載される行が何番目かは変わらないので、一番最初の行の値”7″を変数に設定しましょう。

変数名はここでは”%row%”とします。

次に、出発駅の行の内容を確認するため、「Excelワークシートからの読み取り」を選びます。

ここで設定に先ほど取得した変数”%row%”を入れます。

今の段階では”%row%”が示す値は項目の最初の行の数値7です。

ここで取得した値は”%ExcelData%”としています。

今までと違い、準備の段階で”%row%”と”%ExcelData%”の2つの変数を先に設定しましたが、これが以降の処理に大きく関わってきます。

ある種プログラム特有の考え方を表している動作なので、ここでつまずく人も多いかと思います。

念入りに解説します。

項目数を数えるために今回使用するのは「ループ条件」というアクションです。

ポイントは、「空欄の行以降は読み取らない」、つまり何か書いてある限りは読み取り続けるように設定する必要があります。

ここでは、「”%ExcelData%”の値が空欄でない」場合にループを繰り返す様設定します。

今の段階では、”%ExcelData%”の値は列3(C)、行”%row%”=7のため、C7にある駅名を取得しています。

ここから、下に順番に読み取って項目数を数えてもらう必要があるので、以下のように設定します。

“%row + 1%”とすることで、先ほど設定したループ条件「”%ExcelData%”が空欄でない」限りは、7行目から1行ずつ下に降りて値の取得を繰り返すようになります。

サンプルでは、11行目の大門駅までが記載されたセルであり、12行目からは空になります。

この場合は、7行目を読み取ってから”%row +1%”を繰り返していき、値が12になった時、「”%ExcelData%”が空欄でない」という条件を満たさなくなる(空欄になる)ため、12行目を読み取った時点でループが終了します。

“%row%”の設定を行った後、再度”%ExcelData%”の取得を行い、値の確認をしています(このアクションは前の「Excelワークシートからの読み取り」を複製しています)。

これで読み取るべき行数を取得することが出来ました。

繰り返し処理② 交通費精算書の読み取り

今まで一番上の項目について順番に読み取っていた交通費精算書の各項目ですが、先ほどループ処理で取得した変数を用いることで、記載されているすべての項目を読み取ることが出来るようになります。

ここでは、「Loop」のアクションを使います。

先ほどのループ条件と異なり、始まりの値と終わりの値を設定することで、その間を反復で動作します。

「Loop」アクションで、出発駅を取得する「Excelワークシートから読み取り」から、条件分岐のENDまでを囲いましょう。

最初の設定では、取得する行は一番上の行である7を指定していました。

ここでループアクションを使い、一番下の項目行を指定します。

一番下の項目は、先ほど「ループ条件」アクションで値を書き換えた”%row%”を用います。

 

「ループ条件」アクションを使って行を取得したとき、”%ExcelData%”が空欄になったところでループが止まっているため、”%row%”の値は「最終行の下の空欄の行」になっています。

 

そのため、終わりの行はそれより1行分少ない”%row -1%”になります。

以上を踏まえると、「開始値」は一番上の項目である”7″、「終了」には”%row -1%”を入力します。

また、「増分」とは、ループしたときに増える数値のことです。

“1”ということは、開始値の7から+1していき、終了の値になるまでループするようになっています。

「Loop」で取得した値も変数として置かれます。

今回はそのまま”%LoopIndex%”としています。

今度は前に設定していた各Excel操作のセル指定を変更しましょう。

今までは最初の行だけを取得するため、設定は全て”7″にしていたと思います。

ここに、先ほど取得した”%LoopIndex%”を当てはめましょう。

“%LoopIndex%”に設定したことで、ループに合わせて先頭行から順番に取得・記載できるようになりました。

最終修正

ここまでで、エクセルファイルの項目は問題なく取得できるようなっているかと思います。

ただ、このままでは新規のブラウザ立ち上げを閉じずに繰り返してしまうため、最後に置いていた「Webブラウザーを閉じる」アクションを画像の位置に持っていきましょう。

これでブラウザ立ち上げから閉じる処理までがループの中に含まれるようになりました。

 

これで交通費精算書自動化ロボットは完成となります。

実際にロボットを実行し、正しく動作するか確認して見てください。

また、業務ロボットについての質問等がございましたら、下記問い合わせからご気軽にご相談ください。

オンラインセミナー

Power Automate Desktopに関するオンラインセミナーを開催予定です。

詳細はこちら

お問い合わせ

名古屋本社

東京本社

【受付時間】9:00~18:00

pagetop

お客様のお悩み承ります。