皆もすなるQiitaといふものを、儂もしてみむとてするなり。
と言う訳で、こん**は!はなっち!です。
★★★この記事はUiPathブログ発信チャレンジ2021ウィンタの1日目の記事です。★★★
今回は、UiPath 2021.10から新しくリリースされた「ダウンロードを待機」アクティビティのご案内です。
【経緯】
WEBサイトからのファイルのダウンロードは、UiPath社のブログWindows 標準 UI の自動化のヒントにあるように、なかなかハンドリングしていくのは大変です。
https://www.uipath.com/ja/blog/developer/windows-ui-automation
そのため、ダウンロード完了のタイミングを検知してくれる「ファイルをダウンロード」アクティビティとして、UiPath.System.Activitiesのv20.4で登場しました
https://docs.uipath.com/activities/lang-ja/docs/get-last-downloaded-file
ところが、このアクティビティの名称が、「実際にファイルをダウンロードしてくれる機能」と誤認されてしまい...
UiPath.System.Activitiesのv20.10.1で、
「ファイルをダウンロード」アクティビティの名称を [ダウンロードを待機] に変更すること変更し、オートメーション プロジェクト内でのこのアクティビティの用途が正確に反映されるようにしました。
と言う流れで、名称を見直したようです。
https://docs.uipath.com/releasenotes/lang-ja/docs/uipath-system-activities
[ダウンロードを待機] アクティビティの使い方はこちら!
https://docs.uipath.com/activities/lang-ja/docs/get-last-downloaded-file
【実装】
まずは使ってみましょう!
1)ダウンロードに関しての設定の確認。
ダウンロードを待機アクティビティは、監視するフォルダを指定する必要があるので、ダウンロードの際に特定フォルダに変更して!なんてやるとちょっと大変かもしれません(できない事はない)、
ですので、ダウンロードするフォルダを固定にしてしまいました。CHROMEですと、詳細設定 > ダウンロード の「ダウンロード前に各ファイルの保存場所を確認する」をOFFです。
2)まずはドラッグ&ドロップしてみる
「監視対象のフォルダー」を確認して、「ダウンロードされるファイル」に、FileInfo型の変数を指定すればいいんですね。
3)動かしてみましょう!
あれ?ダウンロードのファイルを待つ間もなく、アクティビティ抜けてしまった...
4)マニュアルを読む
そうなんです。「ダウンロードを待機」アクティビティ中の「実行」に、ダウンロードするアクションを入れないとダメなんです。実際にダミーファイルをダウンロードできるサイトから、ダウンロードするようにしてみました。
5)再度、動かしてみる!
「クリック」アクティビティが「ダウンロード」ボタンをクリックし、数秒掛かったダウンロードが終了すると!無事、ダウンロードの終了を検知して、ファイル名が表示されました!
6)タイムアウト値
このアクティビティには、「タイムアウト」のプロパティが存在します。
監視を何秒するかの設定ですね。デフォルトは300秒。つまり5分。これを超えるとどうなるか…
「タイムアウト」に"1"を設定し、監視時間を1秒にして実行してみました。
こういう例外の型でTHROWされました!
こういった場合、トライ~チャッチで制御していけばOKですね。
7)いたずらしてみよう!
「ダウンロードを待機」アクティビティ中の「実行」に、ダウンロードするアクションを入れないとダメなんですが、まず、「実行シーケンス」を外してみましょう!
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
当然ダメでした。
「ダウンロードを待機」アクティビティ中の「実行」のままは、2)~3)でやったので、その中に新たな「シーケンス」アクティビティを入れてみました。
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
成功です!(監視対象のフォルダ中のファイルを整理していたので、先の結果と同じですが。。)
では、「ダウンロードを待機」アクティビティ中の「実行」の中に「コメント」を入れてみました。
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
これも成功です!
どうやら、WEBからのダウンロードアクションでなくてもイケそうですね。
と言う訳で、先の「コメント」アクティビティをいれてみたロボットで、WEBからのダウンロードではなく、デスクトップにあった適当なファイルをドラッグ&ドロップしてみました!
これも成功しました!
【まとめ】
「ダウンロードを待機」アクティビティは、WEBからのファイルダウンロードを待機し、監視対象のフォルダの変化を検出して、ファイル情報(FileInfo型)で返すアクティビティだという事がお分かりいただけたと思います。
試しに、ロボット実行して、「ダウンロードを待機」している状態で、監視対象のフォルダ中のファイルを2つほど消して、その後にファイルがダウンロードされてきても検出されませんでした。監視時点のファイル数を超えれば検出されるかと、その後ファイルを陽にコピーしてきても検出されませんでした。ですので、ロボット実行中の監視対象のフォルダへの操作は控えた方がいいですね。
おわりに
いかがでした?
このアクティビティの存在は、先のUiPath Friends Festivalでの登壇発表で知ったのでした。このように新しい情報、新しい知見を得るには、アンテナを張って、イベントに参加してみましょう!
私も実務ロボで、「ダウンロードを待機」アクティビティを使ってみています。
是非UiPathでのロボ開発の一助になればと思っています。
ありがとうございました!