皆さんはじめまして!
ビジネスプラットフォームテクノロジーセンター(BPTC) のもっちーです。
私は昨年度までデジタル推進変革室という部署で、社内の情報システムの導入保守や業務改善業務に携わっていました。
その中で、UiPathを使った業務自動化にも取り組んでいたところ、今年度からBPTCに部署異動となりました。自社の業務改善する立場から、お客様に業務改善をデリバリーする立場となりました。
こちらのブログでは、皆さんに業務改善につながる情報をお届けできたらと思っていますので、よろしくお願いします。

さて、業務改善のツールは様々ありますが、マイクロソフト製品の自動化が行えるツールとして Microsoft Power Automate が4月にリリースされました。
Power Automate は先月のブログ記事で やまさきあ さんに記事を書いてもらいましたが、
今回はその別機能のRPA部分についても調査してみました!
RPA機能を使って簡単な操作の自動化を試してみましたので、そちらの内容を皆さんにお届けします!!

目次

Power Automate のRPA機能を利用する場合の注意点

Power Automateの機能の一部としてRPA機能(UIフロー)が備わっていますが、Power AutomateとRPA機能のライセンス形態が分かれています。
Power Automateが利用できる環境、ライセンスであっても、RPA機能が利用できない場合もあるので注意してください。

ご自身のライセンス契約や、企業のライセンス担当者に確認いただいてから、Power Automate のRPA機能を利用してみてください。
詳しくはMicrosoftのWebページを参照してください。(https://japan.flow.microsoft.com/ja-jp/pricing/?currency=JPY)

自動化する操作の流れ

今回自動化を試してみた操作は以下です。

1. 記事タイトルの取得

Webブラウザ(Chrome)からクレスコエンジニアブログにアクセス、RPAカテゴリを選択し、表示されている最新記事のタイトルを取得する

2. 記事タイトルをファイルに書き出す

メモ帳を開き、先ほど取得した記事タイトルを書き込んで、OneDrive 上にファイルを保存する

3. タイトルファイルをTeamsに投稿する

Teams の特定のチーム、チャネルに OneDrive のファイルを添付してメッセージを投稿する

このような簡単な操作ですが、こちらを Power Automate を使って自動化してみました。

1.の「記事タイトルの取得」は、本来であれば「記事一覧の取得」をしたかったのですが、今回はレコーディング機能を使って簡単に実装できるところまでとして、「最新記事タイトルの取得」を自動化しました。今後こちらの機能の学習を進めて、「記事一覧の取得」に機能拡張していきたいです。

また、2.の「記事タイトルをファイルに書き出す」は、Power Automate にエクセル等に書き出すアクションが既に用意されています。今回はRPA機能を試してみることを目的にしているので、あえてUI操作でファイル出力を実装してみました。

自動化のための準備

上記で挙げた操作を自動化するために、以下のツールをインストールしました。

  • UI Flow:デスクトップアプリの自動化に利用します。
  • Chrome用UI Flowアドオン:Webアプリの自動化に利用します。
  • Chrome用Selenium IDEアドオン:Webブラウザ自動化ツールです。Power AutomateではWebアプリの自動化はSeleniumで実装します。
  • On-premises data gateway:クラウド上で作成したフローとローカルで実行するUIフローの操作を繋ぐために利用します。

これらはWeb上の Power Automate のサイトでフローを実際に作成する中でインストールを促されるので、画面の指示に従ってインストールすればOKです。

では、実際にフローを作成してみましょう。

Web UI フロー作成

Power Automate のサイト(https://japan.flow.microsoft.com/ja-jp/)にアクセスします。

左のメニューから「作成」を選び、表示された画面から「UI」フローを選択します。

するとデスクトップとWebを選択する画面が表示されるので、「Webアプリ」を選択して、「次へ」をクリックします。

フロー名と初期表示URLの入力画面になるので、それぞれ入力します。
レコーダーの起動をクリックするとフロー作成画面が表示されます。

Selenium IDE でWebの自動化フローを作成してきます。
画面右上の録画ボタンをクリックすると、実際にユーザが行った操作を Selenium のコマンドに変換してくれます。

録画を開始したらクレスコエンジニアブログの画面から、RPAカテゴリのリンクをクリックします。Selenium IDE の画面に戻り、先ほどの録画ボタンをクリックすると録画が停止します。
すると、以下のようにユーザ操作がコマンドに変換されます。

ここからWeb画面の文字列を取得する処理を追加していきます。
処理を追加したい行を右クリックし、「Insert new command」を選択します。

「store text」コマンドを追加して、格納する変数を設定します。
対象の文字列はTargetのマウスカーソルボタンを押すと、画面操作で取得対象を設定できます。

取得した文字列を確認するために「echo」コマンドも追加します。
以下のようにソースコードが作成できたら、Web UI フローは完成です。

最後に画面上部の三角ボタンをクリックしてテスト実行してみます。
ログに記事タイトルが表示されればテスト成功です。

デスクトップ UI フロー作成

続いて、取得した記事タイトルを保存する処理の自動化を行っていきます。
Power Automate のサイトからUI フロー作成画面より、デスクトップアプリを選択し、作成していきます。

デスクトップアプリのフロー作成を開くと最初に「入力」設定画面が表示されます。
「入力」を簡単に説明すると、プログラミングにおける関数の引数にあたります。
フローの動作に必要な情報を、「入力」として渡してあげます。

今回は、前の処理で取得した記事タイトル「記事名」と、ファイルを保存する際に使用する「日付」の2つを「入力」として設定します。
以下の赤枠のように左からラベル名、テストで使用するときの値、各入力の説明をそれぞれ設定していきます。

「入力」を設定したら続いて自動化する処理部分を作成していきます。
こちらもWebアプリのときと同様に、レコーディング機能があります。
そちらの機能を利用して、実際に自動化したい処理をユーザが実施して、それを自動化アクションとして記録します。
レコーディングでは、具体的には以下の操作を記録しました。

  1. メモ帳を開く
  2. 記事タイトルを入力する★
  3. メニューからファイル→名前を付けて保存を選択する
  4. OneDriveフォルダを選択する
  5. ファイル名に日付を入力する★
  6. 保存ボタンを押す

上記で星印のついている操作は、「入力」を利用します。
レコーディング中に画面上部にパネルが表示されるので、そこから「入力→記事名 or 日付」を選んで入力したい箇所をクリックすると、「入力」で渡された値がメモ帳に入力されます。

レコーディングでユーザ操作の記録が完了すると、フロー作成画面に記録した操作がアクションとして設定されます。

自動化したい操作が記録できたら、次に「出力」を設定します。
ここで設定する「出力」というのは、自動化の中で画面上のテキストを取得するなどした場合に、それをフローの外に出力する場合の設定です。
今回のフローで出力するものはテキストファイルですが、そちらは既に OneDrive に保存する処理として実装しました。
そのため、こちらの「出力」設定は不要なのでスキップします。

最後に動作テストを実施して、エラーなく動くことが確認できたらデスクトップアプリUIフローは完成です。

一連のフローを結合して、フローを完成させる

これまで「記事タイトル取得」と「記事タイトル保存」の2つの処理をそれぞれフローで自動化してきました。
ここでは、それぞれのフローを繋げて、タイトルファイルを Teams に登録するところまでを自動化していきます。

Power Automate のサイトからUI フロー作成画面より、インスタントフローを選び作成していきます。
今回は手動でフローを動かすため、トリガーは手動を選択します。

フロー作成画面が自動化する処理をアクションとして追加していきます。
まずは、「記事タイトル取得」処理に追加します。
アクションから「UI flows」を選び「WebのUIフローの実行」を選択します。
そこから先ほど作成した「記事タイトル取得」を選択、ブラウザとして Chrome を設定、実行モードを手動に設定します。

同様に「記事タイトル保存」処理も追加します。
こちらのフローは入力が存在するので、そちらも設定していきます。
入力欄をクリックすると動的コンテンツ設定ポップアップが表示されるので、その中から設定したいものを選びます。
記事名には Selenium で記事タイトルを格納した変数を設定します。

これで「記事タイトル取得」処理と「記事タイトル保存」処理を繋げて動かすことができるようになりました。

次にタイトルファイルを Teams に投稿する部分を追加していきます。
Teams への投稿は当初ファイルを添付したメッセージの投稿を考えていましたが、それが行えそうなアクションを見つけられなかったため、今回はファイルのリンクURLをメッセージ投稿します。
そのため、OneDrive 上に保存されているファイルのURLを取得するアクションを追加します。
ファイルパスは OneDrive 上のテキストファイルが保存されるフォルダを設定し、ファイル名は日付を動的コンテンツとして設定します。

最後にTeamsにメッセージを投稿するアクションを追加します。
投稿するチーム、チャネルを設定し、メッセージをHTML形式で指定し、ファイルのリンクを埋め込みます。

これでフローは完成です。実際に動かしてみましょう。

フローを実行すると、私のPC上で先ほど作成したWebサイト上での操作やメモ帳への保存処理が、自動で実行されます。
一通りの処理が終わった後にTeamsを確認するとメッセージが表示されていました。
リンク先も確認しましたが、問題なく記事タイトルが記載されていました。
自動化成功です!!

まとめ

今回は Microsoft Power Automate の RPA機能を使って、簡単な操作の自動化を試してみました。

感想としては、UI操作とマイクロソフト製品へのアクションをシームレスに自動化できるのは非常に便利だと感じました。
今回のような簡単な操作ではレコーディング機能を使用することで、UI操作の自動化を比較的簡単に実装することができます。

Power Automate を他のRPAツールと比較した際はどうだったでしょうか。
私が普段使用している UiPath とPower Automate を比較してみました。

まずはUI操作を伴わない自動化の観点では、Power Automate の方が優れていると感じました。
Power Automateにはマイクロソフト製品を中心に多数のアクションが準備されており、それらを画面上で組み合わせるだけで簡単に自動化することができます。
例えば Teams への投稿のアクションでは、自分が所属しているチームやチャネルの情報が画面上に表示され、インタラクティブな操作で実装することができます。

UiPath にも Teams への投稿のアクティビティがありますが、アクティビティのプロパティに自分が所属しているチームやチャネル情報は表示されないため、設定する情報をどこからか探してくる、ワンクッションが入ってしまいます。

では、UI操作を伴うRPA機能の観点はどうでしょうか?
こちらは、UiPath の方が優れていると感じました。

Power Automate では、自動化する際に要素を認識するセレクターの設定は、構造化データがそのまま表示されているため、難解だと感じました。

UiPathではセレクター情報がある程度整理されて表示されており、要素が今認識できているかも簡単に確認できるため、セレクター周りの機能が充実しています。

例えば、Aのボタンをクリックしていたところを、Bのボタンに変えたいという場合には、UiPathの方が簡単に修正できると思います。

また、UI操作の自動化は Power Automate では実行時間が結構かかってしまう印象を受けました。
参考に今回作成したフローの実行時間を載せておきます。

上記より、Power Automate の使い方としてはマイクロソフト製品周りを中心としたアクションをメインに自動化して、一部分のUI操作を組み合わせる使い方が良いと感じました。

皆さんも Power Automate とそのRPA機能を試してみてはいかがでしょうか。
最後までお読みいただき、ありがとうございました。