RPAコラムー第29回 Power Automate Desktop(Power Automate for desktop)でロボット作成(2/3)

前回コラムでは、ランキングの取得について、Webページから必要な情報を取得する工程まで行いました。

今回は、取得したランキングのデータをエクセルに記載する工程を自動化していきます。

エクセルにデータを書き込む

前回のランキングデータ(1~25位)を取得した際に、エクセルデータが作成されていると思います。

ここから後半の26~50位のデータを追記していきます。

後半のデータは、前半のデータのすぐ下に入力する必要があります。

1~25位のすぐ下の空欄の場所を取得するため、「Excelワークシートから最初の空の列や行を取得」を選びます。

↑エクセルデータは1位~25位のデータを取得した時に出力されたものを指定します。

“%FirstFreeColumn%”には空列番号が、”%FirstFreeRow%”には空行番号が取得されます。

以上から書き込みを行う空白セルの場所の指定が出来たので、さっそく後半のデータを入力します。

入力には「Excelデータに書き込み」を使います。

↑左端(A列)且つ先ほど取得した空白行の位置に26~50位の情報を記載します。

書き込む値は”%Ranking26_50%”、列は”A”、行は”%FirstFreeRow%”となります。

ここまでで、ランキングのデータの記載が完了しました。

次に、各項目名を先頭行に記載します。

今の状態では、先頭行には既に情報が入力されているので、1行追加をしましょう。

追加には「Excelシートに行を挿入」を使います。

↑項目名はExcelの先頭行に入れたいので、行インデックスで1を指定します。

今挿入した空白行へ項目を入力します。

“順位”から”2019年”までの項目を行の一番左から順番に入れていくため、ここで「Loop」アクションを使います。

“%Rankinglist%”は、値を「配列」という形式で取得しています。

配列とは、同じ型のデータの集まりのことを指します。

Power Automate Desktop(Power Automate for desktop)では、配列を取得した際、そのまま貼り付けを行うと縦一列になってしまいます。

取得した項目名を1つずつ横一列に記載したいため、Loopを用いてデータを記載していきます。

開始値には”0″を入力します。

これは基本的にプログラムの考え方では、1からではなく0から数えるのが一般的だからです。

終了値には”%RankingList.RowsCount -1%”と入力します。

“○○.RowsCount”は、変数○○が持つ値に対し、その個数を示すことが出来ます。

“%RankingList%”にて取得した項目は”順位”、”名前・職業”、”番組数”、”出演時間”、”2020年”、”2019年”の計6項目です。

そのため、”%RankingList.RowsCount%”が示す数値は”6″となります。

なぜ-1しているのかというと、前述のとおりプログラムは「1ではなく0から数える」という考え方があるからです。

項目が6つの場合、数えるなら0,1,2,3,4,5となります。6つだからといってそのまま6と入力してしまうと、実際は0を含んだ7つ目になってしまうので、0を配慮して”項目数-1″とすることで正しい数値となります。

実際に書いて表すと、

開始値0、終了値”%RankingList.RowsCount%”の場合、0から6まで繰り返すという命令になります。

つまり0,1,2,3,4,5,6までの7つとなってしまいます。

ただ、実際入力するのは6項目なので、7回目のLoopでは記載するものがなくなってしまいエラーが発生します。

開始値0、終了値”%RankingList.RowsCount -1%”の場合、0から5まで繰り返すという命令になります。

つまり0,1,2,3,4,5となり、記載する数が6つとなります。

これでLoopの数と実際に記載する数を一致させることが出来ます。

これでループの設定が出来ました。

実際に繰り返しの中で行うデータの書き込み処理を作成しましょう。

「Excelワークシートに書き込み」を用い、項目名を入力します。

書き込む値には、”%RankingList[LoopIndex]%”と記載します。

“○○[n]”とは、変数○○が複数の値を持っている場合、n番目の値を指定する、という意味です。

“RankingList[1]”であれば、変数は0から数えることを踏まえると、値は”名前・職業”が指定されます。

“[LoopIndex]”とすることで、繰り返し処理に合わせて順番通りの値を指定することが出来ます。

列の変数には”%LoopIndex +1%”と記載します。

変数は0から数えますが、エクセルは1から数える(0番はない)ので、変数に+1したものを入力します。

例えば、[LoopIndex]が0の場合は、0+1列目=1列目に該当するA列に入力されます。

このように設定することで、A列、B列、C列…という様に順番に項目が記載されていきます。

ここまでのまとめ

本コラムでは、最初の繰り返し処理について解説しました。

今回は作業としては量があるわけではありませんが、設定や処理が複雑で身構えてしまう様な方も多くいらっしゃるかと思います。

特に、変数は0から数えたり、エクセルは普通に1から数えたりとややこしいポイントなので混同しない様よく確認して見てください。

ここまででエクセルを見るとすべての情報を取得できているように見えますが、順位の項目を見ると”位”が取得できているものとそうでないものがあったりと、まだ修正が必要なところがあるのが分かるかと思います。

次回では、この順位の整形をループ処理を用いて行っていきたいと思います。

また、Power Automate Desktop(Power Automate for desktop)の内容についての不明点などござましたら、下記からご気軽にお問い合わせください。

オンラインセミナー

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

詳細はこちら

お問い合わせ

名古屋本社

東京本社

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

pagetop

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