Power Automate Desktopを使ってみた

はじめに

2021年3月2日の「Microsoft Ignite 2021」にてマイクロソフトからPower Automate Desktopの無償提供が発表された。
最近業務で業務効率化のサポートする機会があり、使用感を確認するため使ってみた。

Power Automate Deskとは

MicrosoftのPower Automate Desktopは頭文字を取りPAD(パッド)と呼ばれており、マイクロソフトのPower Platformの1つPower Automateの一部。

PADは他のRPA製品と違いマイクロソフト純正製品のため、マイクロソフトの製品(主にマイクロソフトオフィス:excel)との操作性など、どんな感じなのか気になっていたのでそのあたり含めて使ってみた感じや使い方を紹介出来たらと思います!

目次

今回は業務で使うかもと思った操作をやってみました。

  1. メインフローからサブフローを呼び出してファイルダウンロードからデータ加工
    1. スクレーピングでファイルダウンロード
    2. ダウンロードしたファイルをエクセルで加工
  2. JSONをCSVエクセルへ変換
  3. Excelマクロの実行方法
    ※使用したPower Automate Desktopのバージョンは「2.5.39.21056」

1-1.スクレーピングでファイルダウンロード

手順1.フロー名をつけてフロー作成を行う。

手順2.今回はスクレイピング部分と加工部分をそれぞれサブフローにするため、サブフローの作成を行う。

サブフローに名前を付けて保存する(現状サブフロー名にマルチバイト文字は利用不可)

手順3.Webレコーダを使ってスクレイピング
画面上部のWebレコーダをおす。

Internet Explorerを選択する。
(現状では他ブラウザはファイルダウンロードに対応していないため、Internet Explorerを選択し起動モードでオートメーションブラウザを選択します。)

次へボタンを押すとブラウザとWebレコーダーが立ち上がる。

ダウンロードするファイルがあるページへ遷移する。
今回はe-statで人口統計のcsvファイルをダウンロードするのでe-statへ遷移すると、下記画面のようにWebレコーダーの遷移先がe-statになる。

Webレコーダーが遷移先のURLになったことを確認し、「記録の開始」を押す。
それ以降は実際にマウスやキーボードで操作を行いファイルダウンロードがあるページまで遷移する。
今回はキーワード検索に「国勢調査 時系列データ CSV」を入力しファイルのダウンロードがあるページへ遷移する。

マウス操作やキーボード操作を行うとWebレコーダーに記録される。

最後にCSVボタンをクリックし、Webレコーダーを終了する。
終了すると、downloadサブフロー内に操作した内容が表示される。
※なぜか赤枠のように同じアクションが2回続けて保存される場合があるので削除や無効で動作させないようにする。

最後のcsvのダウンロードは「Webページのダウンロードリンクをクリックします」アクションがあるのでこちらへ変更し、保存先等も設定できるので任意の値に設定し保存する。

Internet Explorerのままではダウンロードができないため、起動モードを下記のように「オートメーションブラウザーを起動します」に変更する。


最終的に下記のような形になる。

クリックがうまくいかない場合などは、セレクタを見直すのと遅延→Webページのコンテンツを待機などを使ってチューニングを行う。

手順4.メインから呼び出す
サブフローだけだと実行が出来ないので、メインフローにサブフロー呼び出しを作成して実行できるようにする。

手順5.実行
最後に画面上部の再生ボタンを押して確認する。

これで問題無ければダウンロード先に指定した場所にファイルがダウンロードされる。

1-2.ダウンロードしたファイルをエクセルで加工

今回は5年ごとの人口の変化が分かる統計データをダウンロードしたので、特定の年(1920年)の0~4歳の県毎の人口データを抽出するようなものを作ってみました。
こんな感じで設定することで作成出来ました。
メインフロー

サブフロー

事前に抽出したい値を入出力変数に設定
年齢5歳階級:0~4歳
元号:大正
和暦:9
西暦:1920

1.ダウンロードしたファイルをExcelで起動
2.Excelの何行目までデータが入っているのかを取得
3.不要な注釈が入っていたため削除
4.元データのヘッダーをコピーするためアクティブなExcelワークシートを設定
5.ヘッダーをコピー
6.加工用のシートを追加
7.5.でコピーしたヘッダーを貼り付け
8.書き込む行用の変数を設定
9.データを取得するため、シートの移動
10.データの読み取り

11.書き込むシートへ移動
12.該当データ検索用にループ開始
13~15.年齢5歳階級が探しているデータか確認
16~18.元号が探しているデータか確認
19~21.和暦が探しているデータか確認
22~24.西暦が探しているデータか確認

25~33.探しているデータの場合はエクセルへ書き込む
34.書き込む行用の変数に1足す
上の方法でやりたいことが出来ました。
入出力変数を使うとvlookupみたいなことも出来たり、条件文やループもできたりもっと複雑なことが出来そうなので機会があれば使ってみたいなと思いました。

下記の設定でjsonファイルをエクセルに変換できました。


1.jsonファイルを読み込み
2.jsonをカスタムオブジェクトに変換
3.Excelを起動
4.ワークシートから空の行取得
5.書き込む行用の変数設定
6.jsonオブジェクトでループ
7~14.でエクセルに書き込む

エクセルマクロの実行用のアクションが用意されているのでそれを利用することでエクセルのマクロの実行も問題なくできました。


おわりに

マクロが苦手な人はpower automate desktopを使うことでコードを書くことなく自動化ができるのはいい点だと思いました。
今回はスクレイピングでデータのダウンロードやエクセルでのループや条件分岐等ができることがわかりました。

他にもDOSコマンドの実行など、いろんなことができるので自動化したいものがあったらどんどん使っていきたいと思いました。