レビュー

タダで使えるWindows用業務自動化ツールを活用! Microsoft「Power Automate Desktop」の使い方

MicrosoftのRPAツール「Power Automate Desktop」。Windows 10ユーザーは追加費用なく利用できる

 MicrosoftのRPAソリューションの「Power Automate Desktop」の無償提供が開始された。「Exceの表をベースにアプリにデータを自動入力する」など、PC上の操作を自動化できるツールとなる。

 Windows 10利用者であれば、追加費用なく利用できるのが最大の特徴で、Windowsの標準アプリとしても搭載予定となっている。本稿では、Power Automate Desktopで何ができるのか? どう使えばいいのかを紹介する。

Power Automate Desktopとは何か?

 Power Automate Desktopは、普段、PC上で行なっている操作をロボットに代わりに実行してもらうことができるRPA(Robotic Process Automation)ソリューションだ。

 たとえば、よくある作業の例として、Excelとアプリを使った繰り返し処理を想定してみよう。

(1) 新しい顧客情報が記載されたExcelファイルを開く
(2) 社内で利用している顧客管理アプリの画面を開く
(3) 顧客管理アプリの新規登録ボタンをクリックする
(4) Excel表の1行目のデータを確認し、名前列のデータを顧客管理アプリに入力する
(5) 同じ行の会社名列のデータを顧客管理アプリに入力する
(6) 次の列のデータを入力
(7) 次の行のデータを入力
……以下、繰り返し

 こうした、「転記」「集計」「確認」「変換」「情報取得」などを繰り返す業務を人間の代わりにロボットに実行させることで、作業の効率化や時間短縮、より付加価値の高い作業へのシフトなどのメリットを生み出すことができるのがRPAのメリットだ。

 組織の現場には、全体のシステム化予算の網からこぼれ落ち、「運用で対処」という便利な言葉の犠牲となったさまざまな業務が存在する。こうした業務を現場でその作業を担当する人が、自らの手によって、しかも無償で自動化できるのが、今回のPower Automate Desktopということになる。

 イメージとしては、Excelのマクロを、さらに簡単に、そして広範囲に適用できるものにしたツールと考えるといいだろう。

 Microsoftは、従来からPower Automateシリーズとして、こうしたソリューションを提供してきたが、今回のPower Automate Desktopは、Windows 10ユーザーであれば追加費用なしで利用できる点が最大の特徴となる。

 有償版と比較すると、クラウド版Power Automateとの連携ができなかったり、スケジュールなどでの自動実行ができなかったりと、大規模な環境で使うための機能が制限されているが、Power Automate Desktopというアプリケーション自体で使える機能(自動化できるデスクトップ操作)に関しては、有償版と同じフル機能が提供される。

 なお、今回のPower Autoamte Desktopは、Microsoftが2020年に買収したSoftomotiveの「WinAutomation」がベースとなっている。

Power Automate Desktopを使ってみる

 インストールは「Power Automate Desktopのサイト」からファイルをダウンロードしてインストールするだけと簡単だ。

 インストール後にサインイン画面が表示されるので、ここでMicrosoftアカウントを入力すればいい。

 個人向けのMicrosoftアカウントでサインインした場合は作成した自動化フローがOneDriveに保存され、Microsoft 365の組織アカウントでサインインした場合はDataverse(旧Common Data Service)に保存される仕様となっている。

Microsoftアカウントでサインインして利用する。個人向けアカウントの場合、作成したフローはOneDriveに保存される

 インストールが完了したら、フローの作成を開始する。

 [新しいフロー]をクリックし、名前を付けて[作成]をクリックすると、フローデザイナーと呼ばれるフロー作成ツールが起動する。

 このフローデザイナーでロボットに実行させたい命令を記述していく。左側に[アクション]と呼ばれる命令が用意されているので、ここからたとえば[システム]の[アプリケーションの実行]を画面中央にドラッグすると、パラメータの設定画面が表示される。

フローデザイナーにアクションをドラッグし、パラメータを設定していくことでフローを作成する

 [アプリケーションパス]で起動したいアプリを指定するなど、実行に必要なパラメータを与えると、[1]としてアクションが中央に配置される。

 このように、左側にある命令を実行したい順番に中央に並べていけば、あとから、そのとおりにロボットが操作を実行するわけだ。

 アクションは、34個ほどのカテゴリにそれぞれ10~20個ほど格納されており、[Webオートメーション][Excel][Outlook][PDF]など、業務によく使うアプリ用のアクションが用意されている。

Excelなどよく使うアプリのアクションが用意されている

 たとえば、Excelの項目を展開すると、[Excelの起動][Excelワークシートから読み取り]など、日本語の命令として記述されており、アクションで何が実行されるのかが直感的でわかりやすい。

 WordやPowerPointはないなど、すべてのアプリを対象としたアクションが用意されているわけではないが、存在しないアプリであっても、起動やクリック、キー入力などの一般的なアクションを組み合わせることで操作が可能となっている。

 既存のRPA製品を使ったことがあるユーザーであれば、基本的に同じような感覚で利用できるが、細かな作法で違いがあるので、その部分は慣れが必要だ。

 たとえば、UiPathでは、Excelのシートからデータを読み込むさい、自動的に指定したシートのデータを一括で取得できるが、Power Automate Desktopでは範囲指定が必須となる。こうしたあたりは、流儀というか、作法の問題なので、慣れるしかないだろう。

 RPA製品で初心者がつまづきがちなのは、何と言っても変数(とセレクタ)の存在だが、本製品では変数が自動的に作成されるように工夫されているため、格納するデータによって型を選択するなどの手間がない。

 Excelから読み込んだデータテーブルを変数パネルから確認できるなど、変数に格納されているデータを視覚化できる点も秀逸で、わかりやすい設計となっている印象だ。

変数は「%」で囲んで利用する。自動的に変数が設定されるので選択するだけでかまわないし、型もあまり意識する必要はない(使うときは意識する必要がある)
変数の中身も確認できる

作例1 : Webページの操作をレコーディングする

 実践例として、サンプルのフローを作成してみよう。まずは、レコーダを使ってフローを自動的に作成してみる。

 操作対象として、今回はFormsを使って簡単な入力ページを作成した。Microsoftアカウントがあれば数分で作成できるので、同じように作って試してみるといいだろう。

 Formsの場合、ドロップダウンボックスやチェックボックスを使うとレコーディングで認識させるのは困難なので、まずは、シンプルなテキストボックスのみにすることをおすすめする。

 また、Edge、Chrome、Firefoxを利用する場合は、[ツール]メニューの[ブラウザー拡張]から各ブラウザ用の拡張機能を追加する必要がある。

 今回は、Firefoxを利用したが、拡大表示したディスプレイだと選択場所がずれるのと、選択されるまでに若干タイムラグがあるため、操作が確実に反映されたことを確認しながら操作する必要があった。

 かと言って、Internet Explorerだとテキスト入力後のEnterが認識されず、筆者宅のChromeは拡張機能がたくさん登録してあって安定してブラウザを制御できなくなることがあり、どれもいまひとつ安定性に欠ける印象があった。このあたりは、環境次第という印象だ。

1. Webレコーダーを起動

 [Webレコーダー]をクリックし、利用するブラウザを選択する。

2. サンプルサイトを表示

 ブラウザが起動したら、アドレス欄に以下のサンプルサイトのアドレスを入力して画面を表示する。

https://forms.office.com/Pages/ResponsePage.aspx?id=DQSIkWdsW0yxEjajBLZtrQAAAAAAAAAAAAMAAIn4Kt9UNU4zNzVTR1lVVlNTVEo4VUkzNTkxUzlWUC4u

 上記のサンプルサイトをしばらくの間、そのまま公開しておくが、正直、うまく動くかどうかはブラウザやレコーディング時のクリック先の設定(セレクタ)に依存するため、動作は保証しない。問合せも回答もできないので、自己責任で利用してほしい。

3. 記録を開始

 Webレコーダーの[記録を開始]をクリックし、ニックネーム欄に名前を入力。次にメニュー欄に適当にメニューを入力し、[送信]ボタンをクリックする。画面が切り替わったら、最後に[別の回答を入力]をクリックする(あとで使うため)。

 ここまでできたら、Webレコーダーの[終了]をクリックする。

 ポイントは、Webレコーダーに確実に操作が登録されたことを確認しながら、手順を1つずつ操作することだ。余計な操作が入った場合、あとから削除するだけなので簡単だが、抜けがあると、やり直しになるケースもある。

 とくに、今回のサンプルサイトのFormsのWebページでは、[送信ボタン]など、対象が確実に選択されていることを確認しないと、操作対象をうまく認識してくれない。

 Webサイトの自動化の場合、対象を選択するためのセレクターの設定がかなり重要になるので、場合によっては手動で設定したほうが効率的だが、ページが複雑だと、それも困難なので、うまく認識してくれないときは、何度かレコーディングで選択し直すことをおすすめする。

4. 操作を再現する

 今の操作が記録されたので、[実行]をクリックすると、同じ操作が自動的に実行される。

作例2 :Excelのデータを元に繰り返し自動入力する

 続いて、同じWebページを使って、今度はExcelのデータを元に繰り返しデータを自動入力してみる。今作成したフローを変更するかたちで作成していくが、入力元となるExcelファイルが必要となる。あらかじめ、以下のような簡単なExcelファイルを用意しておこう。

1. Excelの起動

 Excelデータを読み込む。上で作成したフローの先頭に、[Excel]の[Excelの起動]を配置し、[次のドキュメントを開く]を選択し、[ドキュメントパス]で作成したファイルを指定する。データだけ読み込めればいいので、[インスタンスを表示する]をオフにしてExcelは非表示でフローを実行する。

2. 範囲を取得する

 Excelファイルのどの範囲にデータが記載されているのかを把握するために、1の下に[Excelシートから最初の空の列や行を取得]を配置する。

3. 範囲を指定してデータを取得する

 2の下に[Excelワークシートから読み取り]を配置。[取得]で[セル範囲の値]を選択し、[先頭列]と[先頭行]にそれぞれ「1」を指定する。

 [最終列]は、2で配置した空白列の「-1」なので、[{x}]をクリックして[%FirstFreeColumn%]を選択し、[-1]を追記し、[%FirstFreeColumn-1%]にする。同様に[最終行]を[%FirstFreeRow-1%]に設定する。

 そして、先頭行に見出しが含まれるので[詳細]を展開し、[範囲の最初の行に列名が含まれています]をオンにしておく。

4. ループ処理

 Webレコーディングで作成された[新しいFirefoxを起動する]の下に[ループ]の[For each]を配置する。[反復処理を行う値]で[%ExcelData%]を選択する。

 %ExcelData%は、[Excelワークシートから読み取り]で読み込んだExcelデータをDatatable形式で保存した変数となる。[For each]の対象に指定することで、このデータを1行ずつ処理できる。

5. ループ処理に入れる

 Webレコーディングで作成された次の項目(残りの処理全部)をループ処理のなかに移動する。

[Webページ内のテキストフィールドに入力する]
[Webページ内のテキストフィールドに入力する]
[Webページのリンクをクリックします]
[Webページのリンクをクリックします]
[コメント]

6. ニックネームの入力データを書き換える

 ニックネーム欄に入力する[Webページ内のテキストフィールドに入力する]をダブルクリックして開く。

 現在は、先ほどレコーディングで手入力した値が[テキスト]欄に入力されているので、これを削除する。

 続いて、[{x}]をクリックして、[CurrentItem]を選択する。上で説明したように、[For each]の対象としてDatatableを選択すると、表形式のデータを1行ずつ処理できる。このとき、現在選択されている行が[CurrentItem]となる。

 ここでは、現在の行のニックネームの項目(1列目)を入力したいが、0から数えるので[%CurrentItem%]を[%CurrentItem[0]%]と書き換える。

7. メニューを入力する

 同様にメニューに入力する値を変更する。手入力した値を削除してから、[{x}]をクリックし、[CurrentItem]を選択。今回は2列目の値なので0から数えて1なので[%CurrentItem[1]%]と書き換える。

8. 実行する

 これで完了だ。実行すると、Excelのデータが繰り返し入力されることを確認できる。

作成したフローを共有する方法

 このように、作成したフローは、Microsofotアカウントでサインインした場合はOneDriveの[アプリ]フォルダの[Power Automate Desktop]下に保存される。

 ただし、これを共有してもほかのユーザーはフローを実行できない。フローをほかの人と共有する場合は、Robinという言語で作成されたソースコードを共有するのが簡単だ。

 ソースコードは、デザイナーパネルのフローをコピーし、メモ帳などに貼り付けることで確認できる。たとえば、今回、作成したコードは以下のようになっている。

Excel.LaunchAndOpen Path: $'''D:\Temp\test.xlsx''' Visible: False ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: FirstFreeColumn - 1 EndRow: FirstFreeRow - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
# Web レコーダーを使用して自動生成されたアクションの開始
@@timestamp: '2021-04-07T06:15:15.9502602Z'
WebAutomation.LaunchFirefox Url: 'https://forms.office.com/Pages/ResponsePage.aspx?id=DQSIkWdsW0yxEjajBLZtrQAAAAAAAAAAAAMAAIn4Kt9UNU4zNzVTR1lVVlNTVEo4VUkzNTkxUzlWUC4u' BrowserInstance=> Browser
LOOP FOREACH CurrentItem IN ExcelData
WebAutomation.FormFilling.PopulateTextField BrowserInstance: Browser Control: appmask['Recording']['input'] Text: CurrentItem[0] EmulateTyping: True UnfocusAfterPopulate: False
WebAutomation.FormFilling.PopulateTextField BrowserInstance: Browser Control: appmask['Recording']['input 2'] Text: CurrentItem[1] EmulateTyping: True UnfocusAfterPopulate: False
@@timestamp: '2021-04-07T06:16:33.9021957Z'
WebAutomation.Click BrowserInstance: Browser Control: appmask['Recording']['div 2']
@@timestamp: '2021-04-07T06:16:37.5831024Z'
WebAutomation.Click BrowserInstance: Browser Control: appmask['Recording']['a']
# Web レコーダーを使用して自動生成されたアクションの終了
END

 これを再びデザイナーパネルに貼り付ければ同じフローが表示されるので、あとは実行するだけでいい(ファイルパスなどの変更は必要)。

 このため、社内で誰かが作成したフローを共有して、誰もが自動化を実行できるようにすることも可能となっている。

まとめ - 慣れれば快適

 以上、MicrosoftのPower Automate Desktopを実際に使ってみたが、無料ということを考えると、かなりお得に思える。

 正直、競合製品と比べると、操作の容易さや機能の豊富さで劣る部分はあるが、かと言って日常業務を自動化するのに困ることはないし、変数を意識しなくていい点などもとっつきやすい。Robinをマスターすれば相当に高度な作業もこなせるようになる。

 RPAの場合、製品ごとにクセがあるので、それに慣れるまでは苦労するが、そこを超えると使いやすく感じられるはずだ。いずれにせよ、現状、転記などの業務に時間がかかっている場合は、すぐにでも導入をおすすめしたい製品と言える。