PowerAutomateでブラウザを起動してWebサイトを画面キャプチャ

はい、出ました。みんな大嫌いな画面ショット。非人間的作業の代表例とされるアレ。とはいえ、正当性を担保するためには立派な証明手段の一つ（もっとまともな手段あんだろ。。。というツッコミはさておき）。ただそれを手作業でやると、刺身の上にタンポポを乗せるような単純作業となるので、そこをいい感じに改善しようという営み。~~改善というか、そんなことを1秒もしたくないからやったんだけど~~

# 環境
・Win10
・PowerAutomateのバージョン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/acd5ab7c-d8bb-9377-5a73-e2b8d0bbe4f5.png)


# 事前準備
・Microsoftアカウントの開設（無償）
・PowerAutoMateデスクトップ版のインストール（無償）

フローを保存したりしたいので、私は自分のMicrosoftアカウントを開設し、PowerAutoMateに紐づけています。使い勝手の問題でデスクトップ版を入れてますが、ブラウザ版でも事足りると思います。

# やりたいこと
・ブラウザを起動
・URLリストを1行ずつ
・ブラウザで特定のWebサイトを見る
・見た内容を画面キャプチャ
・これを複数の異なるWebサイトで繰り返す。

# やったこと
## リスト作る
複数かつ大量のWebサイトを見る必要があったので、リストを作った。
以下は例。実際にはお好きなサイトを記載する。
```text:url_list.txt(CRLF/UTF-8)
https://chat.openai.com/
https://www.yahoo.co.jp/
https://www.google.com/
https://esta.cbp.dhs.gov/
```

## 作業ディレクトリを作る
ここでは「C:\LocalData\PAtemp\list」というフォルダを作る。そこにurl_list.txtを保存しておく。

## PowerAutomateでフローを作る
新しいフローを作る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/6e0c4a0f-1b2e-9122-ef41-eccfc40683c1.png)

適当なフロー名をつけて作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/4314d22b-368f-5eaa-fe67-68d69d5838e5.png)

空フロー画面になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/110742f4-0449-4acb-3327-e5bf565fa1ff.png)

「やりたいこと」に書いたフローをiniファイルにしてある。
これをまるごとテキストとしてコピーし、空フロー画面を選択した状態で、貼り付け。
※ファイル名はダジャレ。クレヨンしんちゃんでそういうのがあった（OK、OK、風呂桶）。
```ini:webbrowse-flowOK.ini
Display.SelectFileDialog.SelectFile Title: $'''リストを指定してください''' InitialDirectory: $'''C:\\LocalData\\PAtemp\\list''' IsTopMost: False CheckIfFileExists: False SelectedFile=> SelectedFile ButtonPressed=> ButtonPressed
File.GetPathPart File: $'''C:\\LocalData\\PAtemp\\list''' RootPath=> RootPath Directory=> Directory FileName=> FileName FileNameWithoutExtension=> FileNameNoExtension Extension=> FileExtension
DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: CurrentDateTime CustomFormat: $'''yyyyMMdd-HHmm''' Result=> FormattedDateTime
File.ReadTextFromFile.ReadText File: SelectedFile Encoding: File.TextFileEncoding.UTF8 Content=> FileContents
Text.SplitText.Split Text: FileContents StandardDelimiter: Text.StandardDelimiter.NewLine DelimiterTimes: 1 Result=> TextList
WebAutomation.LaunchEdge.LaunchEdge Url: $'''about:blank''' WindowState: WebAutomation.BrowserWindowState.Normal ClearCache: False ClearCookies: False WaitForPageToLoadTimeout: 60 Timeout: 60 BrowserInstance=> Browser
LOOP FOREACH CurrentItem IN TextList
    IF IsNotEmpty(CurrentItem) THEN
        Text.Replace Text: CurrentItem TextToFind: $'''[\\\\/\\\\:\\\\.\\\\=\\\\\\\\\\\\?\\\\&]''' IsRegEx: True IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> Replaced
        WebAutomation.GoToWebPage.GoToWebPage BrowserInstance: Browser Url: CurrentItem WaitForPageToLoadTimeout: 60
        WebAutomation.TakeScreenshot.TakeScreenshotSaveToFile BrowserInstance: Browser File: $'''%Directory%\\\\%Replaced%_%FormattedDateTime%.png''' FileFormat: WebAutomation.FileFormat.Png
    END
END
```

GUIでも設定はできる。その際のフローはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/52378f31-e984-4ce7-3707-a221039ade5d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/2d7f9ff3-b7da-0ac0-a83d-0a07bda4b075.png)


フロッピーボタンを押してフローを保存する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/a55c084f-f23d-cb9e-1fb4-430c20eddc13.png)


## PowerAutomateでフローを実行する
再生ボタンを押すと実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/d29c2456-b429-c09a-c893-3227d6e67844.png)

実行すると、リストを選択しろとあるので、先に作ったリストを選択する（C:\LocalData\PAtemp\list\url_list.txt を選択）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/cb613b1c-1982-9b7d-f565-f9c367a10598.png)

Edgeが立ち上がり、リストにかかれたURLを自動で閲覧する。この間、操作ができなくなるので注意。アメリカ旅行のときに登録するESTAサイトも自動で見れました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/cb3bf739-4a1d-9dfc-99d0-0a1c7910849a.png)

## PowerAutomateでフロー実行後
「C:\LocalData\PAtemp\list」というフォルダを作ったが、その一段上のディレクトリ「C:\LocalData\PAtemp」に、画面キャプチャを保存する形式とした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/f7224c30-1703-70a6-eaa6-001ed8ffc359.png)
「URL_RPAの開始時刻.png」形式でファイル名が生成される。

こんな感じでキャプチャ取得ができていることも確認できた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/47c8ec30-0cf9-dc6a-2e54-db02d53a35af.png)


1ページがのっぺりと全体で遠目で表示されるが、ズームはできるので細かい点もよさげ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/45be02ab-86f1-5261-031d-2b3b4042031e.png)


## フローの注意事項
エラーハンドリングは考えたらパターンが多すぎたので、全部無視する方針とした。そのため、ブラウジングに失敗したURLはキャプチャ取得されないので注意。そこだけは、自動化後も目視確認が必要となる。
あと、ブラウザを閉じるフローがないので（単に入れてないので）、終わったら自身でブラウザを閉じる。
もうちょっと自動化にこだわれば楽しそうだけど、なかなかその時間を捻出するのと、エラーハンドリングを考え出したらきりがなかったので。
Edgeを今回は選んでいるが、Chromeとかでもできます。

# 余談
ストリーミングを聞いていたら、[Jenevieve - Baby Powder](https://youtu.be/O1Qh7j1yD8Y)　という曲が流れてきて、いい歌だな～と思っていたんですが、よくよく調べるとこの曲。往年の日本の歌手、杏里の[Last Summer Whisper](https://youtu.be/uWqnsVMc8CQ)をリメイクした曲だった。音がまるっきり同じ。現代風にするとこんなかっこよくなるのかと思った。そしてどちらも終わった恋について歌った曲。なかなか切ない感じで、どちらも素晴らしい。
最近は日本の80年代の曲が「シティポップ」と呼ばれて流行っているらしい。たしかにいい曲が多いです。