ホットペッパーグルメでは、たまに下記のようなキャンペーンが実施されています。
個人的に幹事をすることが多いので、このようなキャンペーンでの予約を積極的に狙っています。
しかし、キャンペーン対象店舗の検索が弱く、対象店舗はGoogleでの評価もイマイチなことが多いので毎回店選びに時間がかかっていました。
このキャンペーン対象店舗かつGoogle評価が高い店舗を調べる作業を自動化したので、3回に分けて解説します。
- Power Automate for desktopで対象店舗名を取得(今回)
- Power Automate for cloudでGoogle MapsのAPIを用いて評価等を取得
- Power Appsで可視化
Power Automate for desktopで対象店舗名を取得する方法
Google MapsのAPIで検索を行うために、まずは店名をリスト形式で抽出します。
スクレイピングをする際はサイトの利用規約を読み、できるだけサイトに負荷をかけないようにしましょう。
サイト構成からフローの構成を考える
データ抽出の対象ページは、店名などの情報が一覧で20件ごとに表示される構成になっています。
ページごとに店名の文字列を抽出し、次へが押せなくなるまでそれをループさせれば良さそうです。
フロー全体像
完成したフローの全体像は以下の画像の通りです。
次章で作り方詳しく説明していきます。
フローの作り方
レコードで画面操作アクションを生成する
画面レコードで画面操作アクションを生成します。
調べたいエリアをブラウザで開いておいて、店名の部分を右クリック→要素の値を抽出→店名を選択して店名を取得します。
上から2つのお店について同じ操作をすることで、画面に一覧表示されている店名部分を抽出してリストとして保持してくれます。
次に、画面上部もしくは下部の"次へ"をクリックしてレコーダーを終了します。
以下の3つのアクションが追加されればOKです。
無限ループを作成する
"次へ"が押せなくなることをフローの終了条件とするので、ループ条件を用いて無限ループを作成します。
そのループの中に以下の3アクションを追加します。
- 店名一覧をテーブルで取得
- 取得したテーブルをリストに変換
- 出力するリストの末尾に結合
という操作を行なっています。
"次へ"が押せなくなったらフローを終了する
Webページに次が含まれる場合を使用して、"次へ"が画面上に存在すれば"次へ"をクリックし、存在しない場合はクリップボードにリストをコピーしてフローを停止します。
フローが終了した後にExcelにペースト操作をすると、以下のように店名の一覧をペーストすることが出来ます。
今回はリストをコピペしましたが、ExcelにPower Automate for desktopから書き込むことも出来ます。
次回
このリストをもとにPower Automate for cloudでGoogle Maps APIを使用して、評価などの情報を追加したテーブルを作成します。
コメント