KNOWLEDGE & INSIGHTS

2021.04.08

UiPath公式アクティビティでフォルダの圧縮/解凍をする

今までのUiPathとファイル圧縮/解凍

これまで、UiPathの公式アクティビティにはZipファイルの作成、解凍をするものが存在していませんでした。検索すると出てくるものの多くがInvoke系のアクティビティを使用しているため、書かなくてはならない項目や、その内容もファイル名だけではなくファイルタイプなど指定する項目も多く、煩雑に見えます。
しかし、現在のUiPathではアップデートによってフォルダの圧縮/解凍アクティビティが追加されました。このアクティビティでは、煩雑な設定をすることなく、基本的には圧縮もしくは解凍したいファイル名と、圧縮した際のファイル名を設定するだけで、通常の圧縮ファイルやパスワード付きの圧縮ファイルを作成、解凍することができるようになっています。
今回はこの新しいアクティビティについて、使用方法の解説をしていきます。

 

アクティビティを使う前に確認

まず先に、アクティビティそのものの説明をしていきます。今回使用するアクティビティは「ファイルを圧縮/zip 圧縮(Compress/Zip Files)」「ファイルを展開/解凍(Extract/Unzip Files)」の二つです。これらはUipath.System.Activitiesに含まれている所謂公式アクティビティです。ただし、一つ留意点としてこのUipath.System.Activitiesパッケージのバージョンが19以前だと存在しておらず、バージョン20.10.1以降にてアクティビティの存在を確認しております。もしアクティビティを検索したときに出てこなかった場合、UiPath Studio上部の「パッケージを管理」ボタンからバージョンのアップデートを試みてください。
パッケージの確認、アップデート方法は下図の通りです。

「ファイルを圧縮/zip 圧縮」アクティビティはその名の通り圧縮するほうのアクティビティです。ファイルと名前がついていますが、単体のファイルだけではなくフォルダも圧縮することができるアクティビティとなっています。また、複数のファイルやフォルダを選択してまとめて一つのファイルに圧縮することも可能です。
「ファイルを展開/解凍」アクティビティも名前の通り解凍用のアクティビティです。圧縮アクティビティと同様、フォルダの解凍も可能です。解凍できるファイル/フォルダはアクティビティにつき一つとなっています。

 

ファイル圧縮アクティビティを使う

では、圧縮手順から説明していきます。使用するのは前述の「ファイルを圧縮」の方のアクティビティです。
必ず設定しなくてはならないのは、「圧縮済みファイル名」と「zip圧縮するコンテンツ」の二つです。圧縮済みファイル名の箇所には圧縮したあとのZipファイル名を設定し、圧縮するコンテンツは圧縮したいフォルダ、またはファイルを指定します。このファイル名の欄はファイルパスを直打ちすることもできますが、先に設定した変数やConfigファイルで設定した値(Config(“key名”).ToString)を使用することも可能です。
「圧縮済みファイル」の欄にも同様に圧縮したファイルを変数割り当てすることが可能です。圧縮したファイルを後で使用したい場合は、ここで変数を指定してあげると後々楽でしょう。ここで指定した変数はFileInfo型になります。
zipファイルを開くときにパスワードを要求させたい場合は、プロパティタブのオプション欄にあるパスワードの箇所で設定ができます。もちろんここも文字列指定なので、変数を指定することができます。
その他の箇所は初期設定のままでも問題ありませんが、名前のエンコードなど必要があればそれに応じて変更可能です。

 

ファイル解凍アクティビティを使う

次に解凍手順を説明します。使用するのは「ファイルを展開」の方のアクティビティです。
こちらも見た目はほぼ圧縮の方と変わりません。必須の設定は「展開するファイル」のみで、ここには展開したいファイル(フォルダ)を指定します。ここでは先に作成したzipファイルを指定しています(出力した圧縮済みファイルはFileInfo型なので、.ToStringを付けてString形式にしないとエラーが発生します)。
展開先フォルダは指定すればそのフォルダに、「専用フォルダーに展開」を選択すれば圧縮ファイルの名前が付いたフォルダに展開されます。フォルダの位置はこのアクティビティのあるMain.xamlと同じ場所に作成されます。
また、パスワードのかかっている圧縮ファイルを展開したい場合はプロパティタブのオプション欄にあるパスワード項目部分にそのファイルのパスワードを指定することで、パスワード入力しつつ展開することが可能になります。この展開したフォルダもまた、展開済みコンテンツのフォルダ―欄で変数指定することが可能です。

 

ファイル圧縮/解凍アクティビティ使用時の注意点

このアクティビティを使用するにあたって注意しなくてはならないのは、対応しているのがzip形式のみということです。.7z形式や.rar形式には対応しておらず、拡張子を選択したり、解凍時にzip以外の拡張子を指定したりすることはできません。ファイルサイズが大きい場合はzipでの圧縮ができなくなるというデメリットはありますが、zipファイル自体は現在も主流で使われているため、まだそこまで困ることは少ないでしょう。
また、圧縮する際ファイル名に特殊文字が含まれていると文字化けや圧縮ができないなどのエラーが発生することがあるので、ファイル名には注意しましょう。

 

実際の使用事例

「ファイルを圧縮/zip 圧縮」アクティビティを実際の業務で使用した例を参考までにご紹介いたします。
使用した事例では、複数の連番ファイルを取得しクラウド上にアップロードする、という作業が必要でした。当初はフォルダをそのままアップロードしておりましたが、ファイル数が想定より多かったためクラウドの容量を考え、zip化してアップロードすることとなりました。
ファイル数は千以上ありましたが、全て同じフォルダに入れていたためフォルダを圧縮し、クラウド上にアップロードという手順を踏んでおります。
この事例では、Invoke Workflowで分離したワークフローファイル内に圧縮アクティビティを設定しています。引数にConfigファイルから読み取ったパスを設定し、それを圧縮するフォルダとして指定し、圧縮しています。
また、この事例で取得している連番ファイルの名前には別の取得ファイルの命名を流用していました。その際、別ファイルの命名規則に特殊文字が入っていたため圧縮ができないというエラーが発生していました。そのため、連番ファイル名を設定する際にその流用した部分を.replaceなどを使用し該当の文字を変更してエラーの起きない名前に変更、そのあとに連番ファイルを取得して命名という流れにしました。
特殊文字に関するエラー以外ではエラーが起こることはなく、想定通りの動作をするのでわかりやすいアクティビティでした。

 

公式アクティビティの更新でより便利になるUiPath

以上がファイルの圧縮/解凍アクティビティの使い方手順となっています。使い方としては非常に簡単な方なので、今までzipファイルの扱いに悩んでいた方は、Uipath.System.Activitiesのアップデートを確認してこのアクティビティを使用してみてはいかがでしょうか。
UiPathの公式アクティビティは時々アップデートがかかっており、このように便利なアクティビティが追加されている場合もあります。やってみたい操作があった場合、検索してみるのももちろん大事ですが、アクティビティを検索でキーワードを入れてみることもまず一手です。
zipファイルは使用頻度も高く、このアクティビティが使用できるようになることでメリットが増えるのではないでしょうか。現在あまり情報が目立っていないファイル圧縮/解凍アクティビティですが、この記事が皆様の一助になりましたら幸いです。

熊谷菜海

アーツアンドクラフツConsulting & Solution事業部/プログラマー。得意分野はRPA