工事中です

Share on facebook
Share on twitter
Share on linkedin

UiPath zipファイルを解凍 実装編

1つのアクティビティに3つの例外処理?実装する時の例外とは?

zipファイルを解凍するだけの場合、使用するアクティビティは一つ、Invoke Mehodだけです。しかし、実際に作り込むときは様々な例外処理を考えておきながら、フローチャートを作成する必要があります。

基礎編はこちらから。

想定ケース Chromeからzipをダウンロードして解凍

今回は、以下のような前提でzipファイルの解凍を実践していきたいと思います。

  1. Google Chromeからzipファイルをダウンロードする(名前を付けて保存)
  2. ダウンロードしたzipファイルを同一フォルダに解凍する
  3. 解凍後、zipファイルは不要なので削除する

普段の業務でもよくある流れですね。それでは実践していきましょう。

簡易的なフローチャート

簡単なフローチャートです。こういうのを仕様書って言うのは変だなぁ。

実際のワークフローがこちら

長めになってしまいました笑

例外処理 ダウンロード完了するまで解凍を待機できているか?

ダウンロード開始直後にzipファイルを解凍すると、「zipファイルは存在しません」という旨のエラーが発生します。

すぐに解凍するのではなく、ダウンロードが完了するまで待機しておきましょう。

例外処理 ネットワークの不調によるダウンロード失敗していないか?

また、何かしらのネットワークエラーでダウンロードが完了しないケースも発生するので、超過時間を設定して、無限ループを制御しておきます。
今回は「max_minutes」を用意して、10分 経過したらスローを投げます。

zipのパスを分解して、解凍先パスを取得

zipファイルの格納先は各実行環境において異なるでしょう。folder_path など既定値を定めるのも一つの手ではあると思いますが、今回はVB.NETのSystem.IO.Pathを使って、パスを分解していきたいと思います。

解凍前のdownload_pathの変数は末尾に「xxxxxx\xxxxx\.zip」とついていますが、
解凍後のdownload_pathの変数は「 xxxxxx\xxxxx」になるはずです。

例えば、変数「zip_path」と「unzip_path」2つを用意しても良いのですが、基本的には次の工程で処理されるのは解凍後のパスです。ひとつの変数「download_path」を使い続けながら、パスを変えていきたいと思います。

例外処理:解凍先に同一名のフォルダがないか?

解凍先のフォルダパスと同じフォルダが存在していた場合、エラーが発生します。

実際のエラー画面。「既に存在します」と文字が出ています。

そのため、事前に解凍先のフォルダパスが存在するのかをチェックし、もしも存在した場合、削除するエラーハンドリングを事前に組み込みます。

最後にzipフォルダを削除

最後に、download_path + extension でzipパスになるので、そこを削除すれば完成です。

まとめ

長かったですね。たった1つのアクティビティを実装するために、様々なアクティビティを配置していきました。ここらへんがRPAの難しさであり、面白さです。

それでは。

目次