前回の記事では、Power Automate Desktopを使い、ブラウザを自動操作してWebサイトにログインする方法について解説しました。
この記事ではログインしたWebサイトからファイルをダウンロードする方法について解説します。
Internet Explorerの場合はもっと簡単な方法があります。
IEは「Webページのダウンロードリンクをクリックします」アクションが使える。
この記事で紹介する方法はIEを使いたくない人・使えない人向けの方法です。IEの場合は「Webページのダウンロードリンクをクリックします」アクションを使って簡単にできます。下記で解説していますのでご参考になさってください。
Power Automate for DesktopでWebサイトからファイルをダウンロードする方法
Power Automate for Desktopでブラウザ操作
▲テスト用に用意したWebサイトから自動でダウンロードボタンをクリックしてExcelファイルをダウンロードしてファイルを開きます。
フローの完成図
下図が今回作成するフローの完成図になります。
フローを作成する。
レコーダーを使ってフローを作成する。
▲新しくフローを作成しレコーダーを起動します。
▲ファイルのダウンロードが開始されます。図ではブラウザにEdgeを使っています。Chromeをお使いの場合、図と異なるかもしれません。
▲ファイルのダウンロードができたらWebレコーダーを終了します。
下記の2つのアクションが追加されました。
- 「新しいEdgeを起動します」アクション
- 「Webページのリンクをクリックします」アクション
不要なアクションがレコーダーで追加された場合はゴミ箱アイコンをクリックして削除してください。
▲ブラウザのダウンロード完了のポップアップが表示されたらフォルダのアイコンをクリックしてダウンロードしたフォルダを開きます。
▲ダウンロードしたファイルの保存フォルダが開きます。ファイルを右クリックして「プロパティ」をクリックします。
▲ファイルのプロパティが開きます。ファイルの保存場所が表示されるのでメモしましょう。フロー作成のなかで必要になります。
ダウンロードしたファイルを開く処理を作成します。
上記の方法のようにWebページのリンクをクリックして取得したファイルはPower Automate for Desktopでよしなに開いてくれるアクションはないようです。そのため少し工夫して下記のような処理を考えました。
ダウンロードしたファイルを開く
- ファイルをダウンロードする前のフォルダの中のファイル数を調べる。
- ダウンロードを開始する。
- フォルダの中のファイル数が増えるまで、ファイル数を数え続ける。
- ファイル数が増えたらダウンロード完了とみなして次のアクションへ進む。
- フォルダの中の一番新しいファイルを探して開く。
フォルダの中のファイルが増えるまでループ処理を回し続けながら監視します。ファイルが増えたらそこでループを抜けて、フォルダの中の一番新しいファイルを開く。という流れです。
▲図のように①~⑦のアクションを追加します。
▲「フォルダ―」カテゴリの中にある「フォルダ―内のファイルを取得」アクションを1番上に追加します。
▲パラメータを入力します。
- フォルダ―:先の項で調べたブラウザのダウンロードフォルダのパス(例:C:¥Users¥user¥Downloads)
- ファイルフィルター:今回はエクセルなので「*.xlsx」とします。
▲「変数」カテゴリの中にある「変数の設定」を2番目のアクションに追加します。
▲変数の設定を行います。
- 変数名を「myFileCount1」とします。
- {x}をクリック → Filesの中の「.Count」をクリック → 選択をクリックします。
このアクションで「myFileCount1」という変数の中にダウンロード前のファイル数が入ります。
▲同じようにもう一個変数を作ります。
▲一旦変数「myFileCount1」の値を入れます。
- ①設定:myFileCount2
- ②宛先: %myFileCount1%
▲「ループ」カテゴリの中にある「ループ条件」をWebレコーダーで追加したファイルダウンロードアクションの下に追加します。
▲ループ条件のパラメータを入力します。
- 最初のオペランド:%myFilesCount1%
- 演算子:と等しい(=)
- 2番目のオペランド:%myFilesCount2%
このループは指定した条件が同じなら回ります。
この時点では%myFilesCount1%と%myFilesCount2%はイコールなので必ず1回はループが実行されます。
▲ループの中に「フォルダー内のファイルを取得」アクションを追加します。
▲フォルダ―とファイルフィルターのパラメータを入力して詳細をクリックします。
▲「並び替え基準」を作成時間にして「降順」をオンにします。
▲「変数の設定」アクションを追加します。
▲パラメータを入力します。
設定:myFileCount2
宛先:%Files2.Count%
このアクションでmyFileCount2が更新されます。ファイル数が増えればループ条件が成立しなくなってループが止まり次のアクションに進みます。
▲「Excel」→「詳細」→「Excelの起動」アクションを追加します。最後にExcelファイルを開くアクションを追加します。
▲パラメータを入力します。
Excelの起動:次のドキュメントを開く
ドキュメント:%Files2[0].Fullname%
「ダウンロード直後は、ダウンロードしたファイルが一番新しいファイルである。」という仮説のもと、一番新しいファイルを指定する意味で %Files2[0].Fullname% と指定しています。なぜこういう記述になるかは後述します。
以上でフローは完成です。フローの実行をしてみると、ダウンロード完了後にファイルを自動で開くことができるかと思います。
%Files2[0].Fullname%ってなに?
Excelを開くアクションに渡したパラメータ、「 %Files2[0].Fullname% 」についてもう少し詳しく解説します。このアクションでは、上で述べたように一番新しいファイルを開きたいのです。
一番新しいファイルはどこにあるかというと変数 Files2
の一番先頭にあります。これは「 フォルダー内のファイルを取得 」アクションを実行するときに降順で並び替えるように指定しているからです。
Files2
は複数のファイルが入ったリスト型の変数です。リスト型の変数の中から一番最初の値(ここではファイル)を取り出すには、File[0]
と指定します。[]の中に渡す数字は添え字あるいはインデックス番号と呼びます。インデックス番号は0から数え始めるので File[0]
となります。ちなみに2番目に新しいファイルはFile[1]ですね。
Excelを開くには拡張子を含めたフルパスで指定する必要があるのでFullname
プロパティを使って、%Files2[0].Fullname%
と指定しています。
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。
UI要素のエラー・フローが動くときと動かない時がある。
フローが正常に動作しない場合、下記の記事を参考にUI要素を再取得するかセレクターを編集をしてみてください。
まとめ
おつかれさまでした。
ただ開くだけならブラウザの機能でもできますが、ファイル名をキャッチできたので、アクションを追加すればこのまま自動で加工したりメールしたりできそうです!