3
3

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-02-17

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

環境

・Win10
・PowerAutomateのバージョン
image.png

事前準備

・Microsoftアカウントの開設(無償)
・PowerAutoMateデスクトップ版のインストール(無償)

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

やりたいこと

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

やったこと

リスト作る

複数かつ大量のWebサイトを見る必要があったので、リストを作った。
以下は例。実際にはお好きなサイトを記載する。

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

適当なフロー名をつけて作成する。
image.png

空フロー画面になる。
image.png

「やりたいこと」に書いたフローをiniファイルにしてある。
これをまるごとテキストとしてコピーし、空フロー画面を選択した状態で、貼り付け。
※ファイル名はダジャレ。クレヨンしんちゃんでそういうのがあった(OK、OK、風呂桶)。

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

image.png

フロッピーボタンを押してフローを保存する。
image.png

PowerAutomateでフローを実行する

再生ボタンを押すと実行する。
image.png

実行すると、リストを選択しろとあるので、先に作ったリストを選択する(C:\LocalData\PAtemp\list\url_list.txt を選択)
image.png

Edgeが立ち上がり、リストにかかれたURLを自動で閲覧する。この間、操作ができなくなるので注意。アメリカ旅行のときに登録するESTAサイトも自動で見れました。
image.png

PowerAutomateでフロー実行後

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

image.png
「URL_RPAの開始時刻.png」形式でファイル名が生成される。

こんな感じでキャプチャ取得ができていることも確認できた。
image.png

1ページがのっぺりと全体で遠目で表示されるが、ズームはできるので細かい点もよさげ。
image.png

フローの注意事項

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

余談

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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3