Power Automate Desktopで、指定した情報だけをWebサイト上から抽出したい

本記事では、Power Automate Desktopを活用するときに、よくある質問と回答を紹介します。

## 質問：Web上から指定した情報だけを抽出したい
ブラウザーでWebサイトを開いた際に、毎日変動する情報の中から、特定のものだけを抽出するにはどのようにすればよいでしょうか？指定した要素の値のみを取得すると翌日には値が変わっており、エラーが発生します。

## 回答：取得した情報から必要な情報を検索し、式を用いて値を抽出します。
Webサイトより取得したデータを検索し、指定した情報だけを抽出する方法をご紹介します。
データを取得する際には、例えば天気予報や株価など、特定の要素が時間や日によって変動することを考慮する必要があります。
今回は気象庁のサイトの全国の天気予報（<a href="https://www.jma.go.jp/bosai/forecast/">https://www.jma.go.jp/bosai/forecast/</a>）から、指定した地点の明日の天気と最低/最高気温を抽出します。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/3d78d14a-4ec2-4b7f-9bd9-b37621006666.png">

【手順】
1.　フローを作成し、アクション「ブラウザー自動化」からWebブラウザーの起動を選択します。
今回はMicrosoft Edge（以下Edge）を使用するため「新しい Microsoft Edge を起動」を選択し、フローにドラッグアンドドロップします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/a04eedfe-50e6-422e-a497-baf6346ca6d6.png">

2.　アクションの設定画面が表示されるので、初期URLに気象庁のサイト「<a href="https://www.jma.go.jp/bosai/forecast/">https://www.jma.go.jp/bosai/forecast/</a>」を設定し、[保存]ボタンをクリックします。他の設定項目はデフォルトのままとします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/c67eb70f-1462-480b-a67c-baeb4b478322.png">

【保存後のフロー】
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/c7bb995c-0ab1-4d9f-889c-e9d9b5b0b6c4.png">


3.　次にデータを抽出します。アクション「ブラウザー自動化」＞「Web データ抽出」から「Web ページからデータを抽出する」を選択し、フローにドラッグアンドドロップします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/adea4ad5-75f9-41ac-8b01-74d2d54d533b.png">


4.　アクションの設定画面が表示されるので、設定画面を開いた状態で、手順2で設定したURLをEdgeで開きます。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/c570c88e-ffd1-4544-9b12-0283144ab6fe.png">


5.　Edgeでサイトを開くと「ライブ Web ヘルパー」ウィンドウが立ち上がり、要素のセレクター状態となります。画面に表示された天気予報の表の一部を右クリックし、「HTML テーブル全体を抽出する」を選択します。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/c91681d9-2b1e-46fc-bd14-9a66ef3be72f.png">

6.　ライブ Web ヘルパーに、天気予報のテーブル情報が表示されます。データが抽出できたことを確認し、[終了]ボタンをクリックします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/b0a19d21-0d57-4296-a7e0-cf7227ba1a02.png">


7.　「Web ページからデータを抽出する」設定画面で[保存]ボタンをクリックします。
設定項目はデフォルトのままとします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/b353d8ef-f939-4408-b526-ad3dc62c1bd2.png">


【保存後のフロー】
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/96548dac-15a5-4dea-a97c-d89c411322a2.png">


8.　次に、抽出した情報から取得したい値を検索します。アクション「変数」＞「データ テーブル」から「データ テーブル内で検索または置換する」を選択し、フローにドラッグアンドドロップします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/898c2cfb-e088-4595-9368-4b9d499238a5.png)


9.　「データ テーブル」と、「検索するテキスト」を設定します。
データ テーブルの入力ボックスをクリックし、変数「DataFromWebPage」を選択します。
検索するテキストには、今回は札幌の情報だけ抽出したいので「札幌」と入力し、[保存]ボタンをクリックします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/f8bf5352-7519-42a6-bca2-2ce655870c9b.png">


【保存後のフロー】
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/a3a58319-c6fb-41fe-89f6-4af1ea7476b0.png">


10.　ここで一旦テストを実施します。左上の[実行]アイコンをクリックします。
<img width="250" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/80b1bb1c-d70e-49d3-b76e-7e2f0497965c.png">


11.　テスト完了後、フロー変数「DataFromWebPage」をダブルクリックして変数の値を確認します。画面の表が取得できていることが分かりました。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/b139cf35-c3c8-4f9c-b9f7-e11e0086cd15.png">


12.　次にフロー変数「DataTableMatches」をダブルクリックして変数の値を確認します。するとRowに「10」という数字が入っています。
検索条件に設定した「札幌」の情報は10行目にあるということが分かります。
<img width="250" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/70e68edc-8073-4eae-ab5c-c471289c60dc.png">


13.　抽出したデータから必要な値のみをファイルに書き込み、確認します。
アクション「ファイル」から「テキストをファイルに書き込む」を選択し、フローにドラッグアンドドロップします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/2f1faf02-8345-4f0c-b992-fc45cf7d9f3d.png">


14.　「①ファイル パス」、「②書き込むテキスト」、「③ファイルが存在する場合」を以下のとおり設定します。他の設定項目はデフォルトのままとします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/e5332cc9-7306-4d58-bb5f-53024ab23be4.png">


【設定値】
| 項目                      | 設定値                            |
|:-------------------------:|:---------------------------------|
| ① &nbsp;                  | C:\tmp\test\札幌の明日の天気.csv  |
| ② &nbsp;| %DataFromWebPage[DataTableMatches[0]['Row'] + 0]['value #3']%,%DataFromWebPage[DataTableMatches[0]['Row'] + 3]['value #3']% |
| ③ &nbsp;                 | 「内容を追加する」を選択           |

※ ①は環境に合わせて適宜変更してください。

【②の解説】
変数「DataFromWebPage」から指定した要素を参照します。
手順12で確認したように、’Row’の値は10がセットされています。
そのため、インデックス[0][10]を参照し、+0とすることで数値型に変換します。
‘value #3’は、手順11で変数の値を確認した際に、「value #3」という列は明日の天気を表している列であることが分かります。
つまりこの式は、10行目と13行目の列value #3のデータをカンマ区切りで取得しているということになります。

【保存後のフロー】
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/dffb3f13-9865-4e88-ae96-cf72d367a983.png">

15.　最後にブラウザーを閉じます。アクション「ブラウザー自動化」＞「Webブラウザーを閉じる」を選択し、フローにドラッグアンドドロップします。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/d2bd4aeb-c038-4672-af69-4fcee9b43415.png">

16.　デフォルト設定のまま[保存]ボタンをクリックします。
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/cd439c08-1a83-4b56-88fd-6c14c326790a.png">

フローの作成手順は以上です。

17.　左上の保存アイコンからフローを保存し、フローを実行します。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/d112bde0-222f-4155-a07f-c58c0c18eff4.png">

18.　実行後、指定したファイル パスに札幌の明日の天気,最低/最高気温が表示されていることが確認できました。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/1c3091c6-310c-4462-ad87-7fd15ec1d726.png">
以上です。

## 最後に
テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。
カジュアル面談も随時受付中です。ぜひ一度お話ししましょう:laughing:

- <a href="https://hrmos.co/pages/tenda/jobs">募集職種一覧</a>
- <a href="https://hrmos.co/pages/tenda/jobs/031002/apply">カジュアル面談の申込</a>
- <a href="https://note.com/tenda_recruit">テンダで働く人や社風について</a>
- <a href="https://mssp.tenda.co.jp/">テンダのMicrosoftサービス</a>