ViVa！「ダウンロードを待機」アクティビティ！

## 皆もすなるQiitaといふものを、儂もしてみむとてするなり。

と言う訳で、こん＊＊は！はなっち！です。

★★★この記事はUiPathブログ発信チャレンジ2021ウィンタの1日目の記事です。★★★

今回は、UiPath 2021.10から新しくリリースされた「ダウンロードを待機」アクティビティのご案内です。

**【経緯】**
WEBサイトからのファイルのダウンロードは、UiPath社のブログ[Windows 標準 UI の自動化のヒント](https://www.uipath.com/ja/blog/developer/windows-ui-automation)にあるように、なかなかハンドリングしていくのは大変です。
https://www.uipath.com/ja/blog/developer/windows-ui-automation


そのため、ダウンロード完了のタイミングを検知してくれる[「ファイルをダウンロード」アクティビティ](https://docs.uipath.com/activities/lang-ja/docs/get-last-downloaded-file)として、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/releasenotes/lang-ja/docs/uipath-system-activities

[[ダウンロードを待機] アクティビティ](https://docs.uipath.com/activities/lang-ja/docs/get-last-downloaded-file)の使い方はこちら！
https://docs.uipath.com/activities/lang-ja/docs/get-last-downloaded-file

**【実装】**
まずは使ってみましょう！

1)ダウンロードに関しての設定の確認。
　ダウンロードを待機アクティビティは、監視するフォルダを指定する必要があるので、ダウンロードの際に特定フォルダに変更して！なんてやるとちょっと大変かもしれません（できない事はない）、
ですので、ダウンロードするフォルダを固定にしてしまいました。CHROMEですと、詳細設定 > ダウンロード の「ダウンロード前に各ファイルの保存場所を確認する」をOFFです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/7baeb12a-079e-c83c-c7cb-e2e803bd9e5f.jpeg" width=70%>

2)まずはドラッグ＆ドロップしてみる
　「監視対象のフォルダー」を確認して、「ダウンロードされるファイル」に、FileInfo型の変数を指定すればいいんですね。
![ダウンロードを待機_001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/caf879cb-d9b6-cf8e-7e0e-1a688cfc0993.jpeg)

2)実際に動きそうなロボット
　こんな感じで！簡単ですね！
　![ダウンロードを待機_002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/901ee36e-bb12-e5ea-2607-1e5eb54d1364.jpeg)

3)動かしてみましょう！
　![ダウンロードを待機_003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/c900b988-0029-5ed3-b6db-be00d6ec7489.jpeg)
　あれ？ダウンロードのファイルを待つ間もなく、アクティビティ抜けてしまった...

4)マニュアルを読む
　そうなんです。「ダウンロードを待機」アクティビティ中の「実行」に、ダウンロードするアクションを入れないとダメなんです。実際にダミーファイルをダウンロードできるサイトから、ダウンロードするようにしてみました。
![ダウンロードを待機_004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/0343c5a2-8c15-2730-4ce1-1a326bd337e8.jpeg)

5)再度、動かしてみる！
　「クリック」アクティビティが「ダウンロード」ボタンをクリックし、数秒掛かったダウンロードが終了すると！無事、ダウンロードの終了を検知して、ファイル名が表示されました！
![ダウンロードを待機_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/b862be9c-2d89-e988-bd2a-9e5123e7062a.jpeg)

6)タイムアウト値
　このアクティビティには、「タイムアウト」のプロパティが存在します。
![ダウンロードを待機_プロパティ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/08a44000-3beb-9b96-580b-03c43b02d955.jpeg)
監視を何秒するかの設定ですね。デフォルトは300秒。つまり5分。これを超えるとどうなるか…
「タイムアウト」に"1"を設定し、監視時間を1秒にして実行してみました。
![ダウンロードを待機_タイムアウト.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/8106e3fc-959f-59b4-6dff-f449d5700bfa.jpeg)
こういう例外の型でTHROWされました！
こういった場合、トライ～チャッチで制御していけばOKですね。

7)いたずらしてみよう！
　「ダウンロードを待機」アクティビティ中の「実行」に、ダウンロードするアクションを入れないとダメなんですが、まず、「実行シーケンス」を外してみましょう！
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
![ダウンロードを待機_006_未設定NG.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/e8a9d584-9e3f-eaa8-8643-513a06639fbb.jpeg)
![ダウンロードを待機_003 - コピー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/15eafece-f702-ce60-cc89-d313c36f35b6.jpeg)
当然ダメでした。

　「ダウンロードを待機」アクティビティ中の「実行」のままは、２）～３）でやったので、その中に新たな「シーケンス」アクティビティを入れてみました。
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
![ダウンロードを待機_006_空シーケンス2つOK.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/551b148d-fdd0-11ae-b103-4cc3a59e60ae.jpeg)
![ダウンロードを待機_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/2371dcdc-4924-f208-0003-094d695d7a26.jpeg)
成功です！（監視対象のフォルダ中のファイルを整理していたので、先の結果と同じですが。。）

　では、「ダウンロードを待機」アクティビティ中の「実行」の中に「コメント」を入れてみました。
この状態で、手作業で、先のサイトからファイルをダウンロードしてみます。
![ダウンロードを待機_006_シーケンス+コメント.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/f37e971a-30c4-c80d-4b81-7aa92811a421.jpeg)
![ダウンロードを待機_005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/c218359e-85a6-ddb0-c6ed-3f0870c0b05d.jpeg)
これも成功です！

どうやら、WEBからのダウンロードアクションでなくてもイケそうですね。
と言う訳で、先の「コメント」アクティビティをいれてみたロボットで、WEBからのダウンロードではなく、デスクトップにあった適当なファイルをドラッグ＆ドロップしてみました！
![ダウンロードを待機_006_シーケンス+コメント_RESULT.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/d6d89afb-1aef-ff31-8b71-1cb753db2653.jpeg)
これも成功しました！

**【まとめ】**
「ダウンロードを待機」アクティビティは、WEBからのファイルダウンロードを待機し、監視対象のフォルダの変化を検出して、ファイル情報（FileInfo型）で返すアクティビティだという事がお分かりいただけたと思います。

　試しに、ロボット実行して、「ダウンロードを待機」している状態で、監視対象のフォルダ中のファイルを2つほど消して、その後にファイルがダウンロードされてきても検出されませんでした。監視時点のファイル数を超えれば検出されるかと、その後ファイルを陽にコピーしてきても検出されませんでした。ですので、ロボット実行中の監視対象のフォルダへの操作は控えた方がいいですね。


##おわりに
いかがでした？

このアクティビティの存在は、先の[UiPath Friends Festiva](https://uipath-friends.doorkeeper.jp/events/125778)lでの登壇発表で知ったのでした。このように新しい情報、新しい知見を得るには、アンテナを張って、[イベント](https://uipath-friends.doorkeeper.jp/)に参加してみましょう！

私も実務ロボで、「ダウンロードを待機」アクティビティを使ってみています。

是非UiPathでのロボ開発の一助になればと思っています。

ありがとうございました！