Power Automate for desktopを使ってExcelデータをWebシステムへ入力する作業を学習します。
RPAチャレンジにPower Automate for desktopでチャレンジします。
RPAチャレンジとは?
RPAチャレンジ(RPA Challenge)とはUIPath社が公開しているRPA練習用のデモサイトです。
今回のゴール
RPAチャレンジにPADでチャレンジするよ!
RPAチャレンジのサイト内に用意されたExcelデータをRPAを使ってWebフォームに全件分入力するとタイムを計測してくれます。のちほど説明しますがちょっとした意地悪要素もあって一筋縄ではいかないので学習にはおすすめです。このサイトの要件をクリアするPower Automate for desktopフローを作成するのがこの記事の目的です。
▲事前準備として「RPA Challenge」のサイトに用意されたExcelファイルをダウンロードします。10人分の個人情報が記載されたExcelファイルです。この10人分のデータをWebシステムに登録します。
▲Webシステムはこんな感じのUIです。Power Automate for desktopを使ってWebシステムに下記の操作をします。
- 左側の赤い「開始ボタン」をクリックしてフォームの入力を開始します。
- 7つのフォームにExcelデータを入力します。
- フォーム下の「登録」ボタンを押して1人分のデータ登録を完了します。
- ②~③の入力作業を10人分繰り返します。
- 入力が完了したらWebページのスクリーンショットを取得します。
- 作業完了のメッセージを画面に表示させます。
※「スクリーンショット取得」はRPA Challengeの要件には無かったのですが練習として独自に追加しました。
完成したフローが稼動している動画
フローの完成品
今回作成した実際に稼働したフローです。
フローを作成します。
メインフロー作成手順
フローを作成していきます。
▲左側のボタンを押してExcelファイルをダウンロードしてPCに保存しましょう。わたしはC:\Users\user\Downloads\challenge_ja.xlsx
に保存しました。
▲ファイルの中身はこんな感じです。
▲「Excel」グループの中の「Excelの起動」アクションを追加します。
▲パラメータを入力します。
- Excelの起動:次のドキュメントを開く
- ドキュメントパス:C:\Users\user\Downloads\challenge_ja.xlsx
- インスタンスを表示する:オン
- 読み取り専用:オン
▲「Excel」グループの中の「Excelワークシート内のセルをアクティブ化」アクションを追加します。
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstance%
「Excelワークシート内のセルをアクティブ化」アクションについて
「Excelワークシート内のセルをアクティブ化」アクションはセルの使用範囲を自動判別して、データ領域(表)の最終行と最終列を変数に入れて返却してくれます。
上の図の場合、%ActiveCellColumnIndex%(最終列)はH、%ActiveCellRowIndex%(最終行)は10が格納されます。
このアクションはExcel表によっては狙った範囲を認識してくれないことがあります。実際の業務でExcelファイルを読み込むときは下記記事の方法も参考になるかと思います。
▲「Excel」グループの中の「Excelワークシートから読み取り」アクションを追加します。
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstance%
- 取得:セル範囲の値
- 先頭列:1
- 先頭行:1
- 最終列:%ActiveCellColumnIndex%
- 最終行:%ActiveCellRowIndex%
%ActiveCellColumnIndex%、%ActiveCellRowIndex%
▲「Excel」グループの中の「Excelを閉じる」アクションを追加します。
▲パラメータを入力します。
- Excelインスタンス:%ExcelInstance%
- Excelを閉じる前:ドキュメントを保存しない。
▲「Webブラウザー自動化」グループの中の「新しいMicrosoft Edgeを起動する」アクションを追加します。
- 起動モード:新しいインスタンスを起動する
- 初期URL:https://www.rpachallenge.com/?lang=ja
- ウィンドウの状態:標準
- キャッシュをクリア:オフ
- Cookieをクリア:オフ
- ページが読み込まれるまで待機します:オフ
- ポップアップダイアログが表示された場合:何もしない
- タイムアウト:60
▲「ブラウザー自動化」グループの中の「Webページのリンクをクリックします」アクションを追加します。
- Webブラウザーインスタンス:%Browser%
- UI要素:追加方法は下記
- ページを読み込まれるまで待機します:オン
UI要素の追加方法
▲UI要素のテキストボックスをクリックして「UI要素の追加」をクリックします。
▲「追跡セッションウィンドウ」が表示されるのでRPAチャレンジのサイトhttps://www.rpachallenge.com/?lang=ja
をブラウザで開きます。
ここではページ内の左側にある「開始」ボタンのUI要素を取得したいので開始ボタンにマウスカーソルを合わせて赤い枠線が表示されたらCtrl+左クリックを押下します。
▲成功するとUI要素が追跡セッションウィンドウに追加されますので「完了」ボタンをクリックします。
▲「ループ」グループの中の「For each」アクションを追加します。
- 反復処理を行う値:%ExcelData%
サブフローの追加方法
▲フローデザイナー上部の「サブフロー」をクリックして「新しいサブフロー」をクリックします。
▲サブフロー名を入力して保存をクリックします。
▲サブフロー「sub_input」が追加されました。
サブフローの中身は後で作成したいと思います。
「フローコントロール」グループの中の「サブフローの実行」アクションを追加します。先程作成したサブフローを選択します。
- サブフローの実行:sub_input
▲「ブラウザー自動化」グループの中の「Webデータ抽出」の中の「Webページのスクリーンショットを取得します」アクションを追加します。
- Webブラウザーインスタンス:%Browser%
- キャプチャ:Webページ全体
- 保存モード:ファイル
- 画像ファイル:C:\Users\user\Downloads\rpalog.png
- ファイル形式:PNG
▲「メッセージボックス」グループの中の「メッセージを表示」アクションを追加します。今回のフローは少し時間がかかる処理のため、フローが完了したタイミングでメッセージを表示させたくてこのアクションを使っています。
- 表示するメッセージ:処理が終了しました。
▲「ブラウザー自動化」グループの中の「Webブラウザーを閉じる」アクションを追加します。
- Webブラウザーインスタンス:%Browser%
以上でMainフローの作成は完成です。次はサブフローの処理を作成します。
サブフローを作成します。
サブフローの中身を作成していきます。
サブフローの処理内容は7つのフォームにExcelを入力して登録ボタンを押すまでの処理です。
▲「サブフロー」をクリックして先程作成したサブフロー名をクリックします。
▲サブフローに切り替わります。ここにアクションを追加しながらサブフローを作成していきます。
▲「ブラウザー自動化」グループの中の「Webフォーム入力」グループの中の「Webページ内のテキストフィールドに入力する」アクションを追加します。
▲パラメータを入力します。
- Webブラウザーインスタンス:%Browser%
- UI要素:UI要素の追加方法は後述します。
- テキスト:%CurrentItem[‘名前’]%
- 入力をエミュレートする:オン
UI要素の追加方法
▲UI要素のテキストボタンをクリックして「UI要素の追加」をクリックします。
▲追跡セッションウィンドウが表示されます。まずは「名前」の入力欄のUI要素を登録しましょう。Webページをブラウザで開き「名前」の入力欄にマウスカーソルをあわせます。UI要素が認識されると<input>タグの赤い枠線が表示されます。赤い枠線が確認できてからCtrl+左クリックを押します。
▲追跡セッションウィンドウにUI要素が追加されました。<input>という文言が確認できるので問題なさそうなので「完了」ボタンをクリックします。もしここで意図しないUI要素が取れていなかったらもう一度Ctrl+左クリックの操作をしてみてください。不要なUI要素はゴミ箱アイコンをクリックして削除しましょう。
▲こんな感じで同様の手順で7個のinputの数だけアクションを追加しましょう。
同じアクションを複数追加する時はアクションのコピーを使いましょう!
同じアクションが連続する場合は、アクションをドラッグ&ドロップで追加するよりもコピーペーストして複製した方が簡単です。
▲アクションを一度クリックして選択した状態にしてからCtrl+Cを押してアクションをコピーして、Ctrl+Vを押して張り付けます。Ctrl+Vを7回押すとアクションを7個追加することができます。
アクションを複製したら中身のUI要素を1個ずつ取得しなおし、入力するExcelData変数の値も調整しましょう。
inputに対応するExcelData変数
- 名前のinput:%CurrentItem[‘名前’]%
- 苗字のinput:%CurrentItem[‘苗字’]%
- 会社名のinput:%CurrentItem[‘会社名’]%
- 部署のinput:%CurrentItem[‘部署’]%
- 住所のinput:%CurrentItem[‘住所’]%
- メールアドレスのinput:%CurrentItem[‘メールアドレス’]%
- 電話番号のinput:%CurrentItem[‘電話番号’]%
- Webブラウザーインスタンス:%Browser%
- UI要素:追加方法は別記
UI要素の追加方法
▲「登録」ボタンのUIを取得しましょう。
フローが完成しました!
フローを実行します。
エラーがでました!!
フローを実行するとエラーがでてしました。
セレクター > body > app-root > div[Class=”body row1 scroll-y”] > app-rpa1 > div[Class=”row parent”] > div[Class=”instructions col s3 m3 l3 uiColorSecondary”] > div:eq(5) > button[Class=”waves-effect col s12 m12 l12 btn-large uiColorButton”][Type=”submit”] を含む要素が見つかりません。
▲UI要素がうまく認識できないようです。
UI要素を確認して修正しましょう。
実はこのフローは上記のようにエラーが発生してしまいこのままでは正常に動きませんでした。追跡セッションウィンドウで取得したUI要素に問題があるためUI要素のセレクターのチューニングが必要です。
UI要素のセレクターをチューニングしていきます。
▲フローデザイナーの右側の「UI要素」ボタンをクリックしてUI要素の一覧に切り替えます。切り替えたらフォームのUI要素を一つ選択します。
▲現在のセレクターを見るとフォームの特定にID属性を使っています。(input[Id=”Al6qU”])
▲改めてみてみるとフォームの要素は上の図のようになっています。divがあってその中にlabelとinputのペアがあります。今回はこのdiv要素のラベルのテキストを使ってUI要素を特定していこうと思います。
では、次のステップで修正していきます。
▲セレクターをダブルクリックします。
▲セレクタービルダーが開きます。左下のカスタムをオフにします。
▲セレクター編集画面になります。セレクターを直接手入力します。
▲上のようにCSSセレクタのContainsを使って表現します。
▲「「苗字」という名前が含まれるdiv要素の子要素であるinput要素」という意味です。
▲ほかのUI要素も同じように編集します。ついでに名前もわかりやすく変更しました。
以上でUI要素の編集は終わりです。
まとめ
PADでRPAチャレンジにトライしてみたでした。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。