情報システム部門 2021年12月17日

Power Automate Desktopで大量のHTMLファイルを印刷した

Power Automate Desktop で自動化しよう

弊社では印刷関係のお仕事も承っております。その関係の業務で大量のHTMLファイルの印刷を行うのですが、印刷するファイルが多いのでプリンターに送るだけでも大変です。そこで、最近話題のRPAで自動化できないか調べることになりました。
使用するのはMicrosoftのPower Automate Desktop(以下、PAD)です。今回はPADを利用してみてつまずいたところ、その解決法をご紹介したいと思います。

Power Automate Desktop | Microsoft Power Automate
https://powerautomate.microsoft.com/ja-jp/desktop/

ウェブブラウザ(Microsoft Edge)でHTMLファイルが開けないよ

普段Windowsを使っていてHTMLファイルをダブルクリックすれば勝手にブラウザが開くので、「ブラウザー自動化:WEBページに移動します」アクションのURLにHTMLファイルのファイルパスを入れれば開けるだろうと簡単に考えていました。ですが、うまくいきませんでした。ファイルパスの頭に「file://」と書いてみたりしましたがダメでした。そして、Edgeではfileプロトコルが制限されていることを知りました。

Japan Developer Support Internet Team Blog
https://jpdsi.github.io/blog/internet-explorer-microsoft-edge/FileProtocol/

この問題は、ブラウザのアドレス欄にファイルのパスをキーボード入力として渡した後エンターキーを送信して解決しました。「ブラウザー自動化」アクションの「新しいブラウザを起動する」や「新しいタブを作成」の後はアドレスバーにフォーカスしているので、「マウスとキーボード:キーの送信」アクションでファイル名を入力してHTMLファイルをブラウザで開く動作を自動化することができました。

印刷プレビューが表示されたら印刷ボタンを押したい

人間が印刷する場合、印刷ダイアログにプレビューが表示されるのを待って印刷ボタンを押します。自動化するとき、単純にx秒待機としたくなるのですが、印刷するファイルのサイズによってこの待ち時間が1秒だったり、10分だったりするのでうまくいきません。「ブラウザー自動化:WEBページのコンテンツを待機します」アクションで自動化しようとしましたが、印刷ダイアログはうまく捉えることができませんでした。
この問題は、「UIオートメーション:画像の待機」アクションと「デスクトップレコーダー」を使って印刷ダイアログのローディングアイコンが消えるまで待機させる自動化ができました。デスクトップレコーダーにはクリックした個所を画像で記録する機能がありますこれを使って、PADで使いたい画像を取り込むことができました。

サンプル

以下は、印刷ジョブを確認してスプール中のジョブがなくなったらメッセージを表示するフローです。PADの編集画面にペーストして実行してみてください。

LOOP WHILE (1) = (1)
Scripting.RunPowershellScript Script: $'''Get-Printer | Get-PrintJob | Select-Object JobStatus | Select-String Spooling''' ScriptOutput=> PowershellOutput ScriptError=> ScriptError
IF IsEmpty(PowershellOutput) THEN
EXIT LOOP
END
WAIT 5
END
Display.ShowMessageDialog.ShowMessage Title: $'''おしらせ''' Message: $'''スプールが終わりました''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed

記事の著者:

Web制作ならアズシエルにご相談ください。

Web制作パートナーとしてサイトの企画からデザイン、運用まで支援します!Webサイト制作についてはこちらからサービスをご確認ください!

サイトの制作も運用も月額定額料金でプロにお任せできるサービスのバナー

この記事をSNSでシェアする!