BLOG

テレワークやコミュニケーションについて
考えてみました

  1. HOME
  2. ブログ
  3. ビジネス全般
  4. Power Automate for desktopを活用しよう(1)PAD+乗換案内で交通費を自動計算

Power Automate for desktopを活用しよう(1)PAD+乗換案内で交通費を自動計算

Microsoftの「Power Automate for desktop(以下、PAD)」は、定型業務を自動化するRPA(Robotic Process Automation)ツールです。Windows 10以降のユーザーであれば無償で利用できるので、自動化で業務効率を上げる人が増えています。今回は何度も申請することの多い「交通費」の計算を例に、業務を自動化する方法を解説します。

自動化するのは「交通費を調べて合計する」業務

交通費精算は繰り返し実行することの多い業務ですが、「交通費を調べる」作業を面倒だと思う人が多いようです。飛行機や新幹線などの移動であれば、購入時に領収書を発行できるため記載された金額をそのまま入力するだけですが、電車やバスを使った移動の多くはSuicaなどの交通系ICを利用するため、実際に支払った金額を把握しにくいという問題があります。

駅で利用履歴を印刷する、あるいはカードリーダーで利用履歴を確認するといったことを義務付けている企業もありますが、実際には乗換案内のWebサイトで調べた金額を入力して申請するケースが多いようです。また、最近では交通費精算の申請にクラウドサービス利用している企業も増えてきていますが、まだまだExcelファイルに出発地や到着地、金額などを記入する方が多数派でしょう。

そこで今回は、Excelファイルに記載されている「出発地」と「到着地」を読み取り、「駅探乗換案内」のサイトで調べるという一連のフローを自動化してみます。具体的には以下の流れです。

  1. 到着地と出発地の記載されたExcelファイルを開く
  2. 「出発地」と「到着地」のデータを読み込む
  3. Edgeを新たに開いて駅探のサイトを開く
  4. Excelから読み取った「出発地」と「到着地」を、駅探の「出発」と「到着」のフィールドに入力する
  5. 検索ボタンをクリックする
  6. 「料金順」のタブに切り替える
  7. 表示された運賃の一番上を読み込む
  8. 読み込んだ運賃から、“円”の表示を取り除く
  9. Excelの「金額」に入力する
  10. Edgeを終了する

この、3~10の処理を、すべての料金が入力されるまで実行します。なお、自動化に使用するWebブラウザには、事前にPADのアドオンをインストールしておく必要があります。

Excelのファイルを開く

今回はすでに出発地と到着地が入力されているExcelファイルを使用しますが、これらの入力も簡略化したい場合は、Excelで入力フォームを作成しても良いでしょう。

今回は出発地と到着地が入力されているExcelファイルを使用

1.[+新しいフロー]を作成し、アクションウインドウから「Excelの起動」をワークスペースにドラッグ&ドロップします。「Excelの起動」欄は「次のドキュメントを開く」に切り替え、「ドキュメントパス」にExcelのファイルが保存されているパス(保存場所)を指定します。今回は交通費を入力するため、「読み取り専用として開く」はOFFのままにしておいてください。

「ドキュメントパス」にExcelのファイルが保存されているパス(保存場所)を指定

Excelのワークシートを読み込む

次にワークシートの内容を読み込みますが、データが何行目まであるかわからないので、先に「Excelワークシートから最初の空の列や行を取得」を使用し、最初の空行(データが入っていない行)の位置を取得しておきます。次に「Excelワークシートから読み取り」を使用し、「先頭列」「先頭行」「最終列」「最終行」を指定します。最後のデータがある行はFirstFreeRowのひとつ前の列ですが、今回のExcelは最終行に合計欄があるので、出発地と到着地が含まれる行はFirstFreeRowよりも2行前までです。

2.「Excelワークシートから最初の空の列や行を取得」をワークスペースにドラッグ&ドロップし、、最初の空行の位置を「FirstFreeRow」に格納します。

「Excelワークシートから最初の空の列や行を取得」でデータが入力されている最後の行を確認

3.「Excelワークシートから読み取り」をワークスペースにドラッグ&ドロップし、「取得」を「セル範囲の値」に設定します。今回使用するExcelワークシートは、先頭行が項目名になっているので、先頭行は「2」で先頭列に「A」になります。最終列は「C」で、最終行は出発地と到着地が含まれる最後の行でなければならないので、「%FirstFreeRow – 2%」と設定します。読み込んだセル範囲の値は、ExcelDataに格納されます。

出発地と到着地のデータをExcelDataに格納

繰り返す処理の設定と交通費の検索

次に乗換案内のサイトにアクセスして交通費を取得し、結果をExcelに入力します。この処理は記録されているデータ件数回だけ繰り返す必要があります。今回は「For each」を使って、ExcelDataに格納されている要素の分だけ繰り返し処理を実行します。

今回はWebブラウザにMicrosoft Edgeを使用し、交通費は駅探の乗換案内で検索します。なお、Edgeは毎回新しいインスタンスを起動して検索した後に閉じるように指定します。

4.「For each」をワークスペースにドラッグ&ドロップし、「反復処理を行う値」に「%ExcelData%」を指定します。

For eachで反復(繰り返し)処理を設定

5.「新しいMicrosoft Edgeを起動する」をワークスペースにドラッグ&ドロップし、「起動モード」に「新しいインスタンスを起動する」、初期URLに「https://ekitan.com/transit/route」を指定します。

Microsoft Edgeを新しいインスタンスで起動し、駅探の乗換案内を表示

Edgeが新たに起動して駅探のサイトを表示するまでを自動化

【UI要素の追加と削除】

ブラウザ自動化では、操作するUIの要素を指定する必要があります。指定したいUI要素が登録されていない場合には、「UI要素」選択から「UI要素の追加」をクリックして「追跡セッション」を起動します。次にWebブラウザ上で追加したいUI要素の上にカーソルを合わせ、[Ctrl]キーを押しながら、クリックし、「完了」をクリックすると追加されます。

違うUI要素を追加してしまった場合など、不要なUI要素がある場合には、PADのウィンドウ左側のツールバーから、UI要素のアイコンをクリックして、UI要素の一覧から削除します。

レコーダー機能を利用して操作を自動記録すればUI要素も自動で追加されますが、自動化処理で操作する要素がそれほど多くないのであれば、追跡セッションで追加する方が確実です。

6.「Webページ内のテキストフィールドに入力する」をワークスペースにドラッグ&ドロップし、UI要素に「出発」の入力フィールドを指定し、テキスト欄に「%CurrentItem[1]%」を指定します。

出発の入力フィールドに「%CurrentItem[1]%」の値(Excelの出発地)を入力

7.同様に「Webページ内のテキストフィールドに入力する」をワークスペースにドラッグ&ドロップし、UI要素に「到着」の入力フィールドを指定し、テキスト欄に「%CurrentItem[2]%」を指定します。

到着の入力フィールドに「%CurrentItem[2]%」の値(Excelの出発地)を入力

8.「Webページのボタンを押します」をワークスペースにドラッグ&ドロップし、UI要素に「検索」ボタンを指定します。

UI要素に検索ボタンを指定

出発と到着を入力して検索ボタンをクリックするまでを自動化

検索結果から料金を取得してExcelに入力する

交通費は最安値を採用したいので、検索結果の画面で「料金順」のタブをクリックし、一番上の料金を取得することにします。また、料金には「円」の単位がついたままなので、単位を除いた数字だけの値をExcelに入力します。

9.「Webページのリンクをクリックします」をワークスペースにドラッグ&ドロップし、UI要素に「料金順」のタブを指定します。

交通費が安いルートを優先するため、料金順のタブに移動

10.「Webページ上の要素の詳細を取得します」をワークスペースにドラッグ&ドロップし、UI要素に表示されている一番上の料金を指定します。料金は「AttributeValue」に格納されます。

リストの一番上に表示されている料金を取得

検索結果の料金順タブに移動し、最上位に表示されている料金を自動取得

11.取得した料金から「円」を取り除くため、「テキストを置換する」をワークスペースにドラッグ&ドロップし、「解析するテキスト」に「%AttributeValue%」、「検索するテキスト」に「円」、「置き換え先のテキスト」に「%”%」を指定します。これで料金は数字だけになり、「Replaced」に格納されます。

取得した料金から「円」を取り除く

12.「Excelワークシートに書き込み」をワークスペースにドラッグ&ドロップし、「書き込む値」に「%Replaced%」、「書き込みモード」に「指定したセル上」、「列」に「D」、「行」に「%CurrentItem[0] + 1%」を指定します。なお、CurrentItem[0]に格納されているのは、Excel上ではAの行に記載されている値で、書き込むセルを指定するために配置しています。

Excelに料金を自動で入力

13.「Webブラウザを閉じる」をワークスペースにドラッグ&ドロップします。自動的にこの処理のために起動したWebブラウザが閉じます。(すでに開いているWebブラウザは閉じません)

この処理のために起動したWebブラウザ閉じる

自動実行して結果を確認する

設定が終わったら、ツールバーから実行をクリックします。指定したExcelファイルが開き、自動的に交通費がExcelのD列に入力されれば成功です。D列の末尾にはオートSUMが指定されているので、で自動的に交通費の合計が表示されます。

ツールバーにある「実行」ボタンをクリックすると、自動処理を開始する

出発地と到着地の検索を繰り返して自動的にExcelに記録

今回は敢えてExcelのファイルを保存して閉じることはしていません。この後、必要であれば印刷したり、日付のファイル名を付けて保存したりといったアクションを実行することも可能です。今回はExcelとWebブラウザを使用した簡単な自動化の例を紹介していますが、その他にもデスクトップ上のさまざまな業務をPADで自動化可能です。

まとめ

・Power Automate for desktopは、Webブラウザの操作も自動化可能
・Webを操作するためのUI要素は「追跡セッション」で追加する
・Excelの操作やWebの操作以外にも自動化できるアクションはたくさんある

関連記事