はい、出ました。みんな大嫌いな画面ショット。非人間的作業の代表例とされるアレ。とはいえ、正当性を担保するためには立派な証明手段の一つ(もっとまともな手段あんだろ。。。というツッコミはさておき)。ただそれを手作業でやると、刺身の上にタンポポを乗せるような単純作業となるので、そこをいい感じに改善しようという営み。改善というか、そんなことを1秒もしたくないからやったんだけど
環境
事前準備
・Microsoftアカウントの開設(無償)
・PowerAutoMateデスクトップ版のインストール(無償)
フローを保存したりしたいので、私は自分のMicrosoftアカウントを開設し、PowerAutoMateに紐づけています。使い勝手の問題でデスクトップ版を入れてますが、ブラウザ版でも事足りると思います。
やりたいこと
・ブラウザを起動
・URLリストを1行ずつ
・ブラウザで特定のWebサイトを見る
・見た内容を画面キャプチャ
・これを複数の異なるWebサイトで繰り返す。
やったこと
リスト作る
複数かつ大量のWebサイトを見る必要があったので、リストを作った。
以下は例。実際にはお好きなサイトを記載する。
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でフローを作る
「やりたいこと」に書いたフローをiniファイルにしてある。
これをまるごとテキストとしてコピーし、空フロー画面を選択した状態で、貼り付け。
※ファイル名はダジャレ。クレヨンしんちゃんでそういうのがあった(OK、OK、風呂桶)。
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
PowerAutomateでフローを実行する
実行すると、リストを選択しろとあるので、先に作ったリストを選択する(C:\LocalData\PAtemp\list\url_list.txt を選択)
Edgeが立ち上がり、リストにかかれたURLを自動で閲覧する。この間、操作ができなくなるので注意。アメリカ旅行のときに登録するESTAサイトも自動で見れました。
PowerAutomateでフロー実行後
「C:\LocalData\PAtemp\list」というフォルダを作ったが、その一段上のディレクトリ「C:\LocalData\PAtemp」に、画面キャプチャを保存する形式とした。
「URL_RPAの開始時刻.png」形式でファイル名が生成される。
1ページがのっぺりと全体で遠目で表示されるが、ズームはできるので細かい点もよさげ。
フローの注意事項
エラーハンドリングは考えたらパターンが多すぎたので、全部無視する方針とした。そのため、ブラウジングに失敗したURLはキャプチャ取得されないので注意。そこだけは、自動化後も目視確認が必要となる。
あと、ブラウザを閉じるフローがないので(単に入れてないので)、終わったら自身でブラウザを閉じる。
もうちょっと自動化にこだわれば楽しそうだけど、なかなかその時間を捻出するのと、エラーハンドリングを考え出したらきりがなかったので。
Edgeを今回は選んでいるが、Chromeとかでもできます。
余談
ストリーミングを聞いていたら、Jenevieve - Baby Powder という曲が流れてきて、いい歌だな~と思っていたんですが、よくよく調べるとこの曲。往年の日本の歌手、杏里のLast Summer Whisperをリメイクした曲だった。音がまるっきり同じ。現代風にするとこんなかっこよくなるのかと思った。そしてどちらも終わった恋について歌った曲。なかなか切ない感じで、どちらも素晴らしい。
最近は日本の80年代の曲が「シティポップ」と呼ばれて流行っているらしい。たしかにいい曲が多いです。