まとめてではなく1件ずつファイルをzipに圧縮する【Power Automate Desktop】

エクスプローラーの通常機能を使用すると、特定のフォルダを zip 形式に圧縮することができます。
ただ、ファイルを 1 件 1 件圧縮したい場合は、それぞれ zip への圧縮を指示していかなければならないため、件数が多くなると手間がかかってしまいます。
今回は特定のフォルダ内のファイルを 1 件ずつ圧縮する方法を紹介します。
デモ環境
今回圧縮対象とするのは以下のフォルダです。直下にフォルダ、テキスト、画像がそれぞれ 3 つずつ存在しています。

Power Automate Desktop のフロー紹介
ファイル一覧を取得
まずアクション一覧から、
フォルダー > フォルダー内のサブフォルダを取得
を選択します。
設定するパラメータは以下の通りです。

パラメーター名 | 内容 |
---|---|
フォルダー | C:\power-automate-test |
ファイルフィルター | * |
フォルダーには圧縮したいファイルが格納されているフォルダーを指定します。 ファイルフィルターは初期状態の「*」を設定することで、フォルダー直下の全てのファイルが対象となります。 特定のファイルのみを対象としたい場合は、後述するフィルターの設定を行ってください。
特定のファイルのみ対象とする
対象フォルダの特定のファイルのみ圧縮したい場合は、先ほどのアクションのファイルフィルターを設定します。

指定には正規表現を使用します。
テキストファイルのみを指定する場合は、添付ファイルのように指定します。
ファイルを 1 件ずつループする
アクション一覧から、
ループ > For Each
を選択します。

パラメーター名 | 内容 |
---|---|
反復処理を行う値 | %Files% |
生成された変数 | %File% |
反復処理を行う値に先ほど「フォルダー内のサブフォルダを取得」で取得した変数を設定します。
生成された変数は初期状態の「CurrentItem」でも問題ありませんが、変数が何を保持しているのかわかるように「File」に変更しておきます。
ファイルを圧縮する
圧縮 > ZIP ファイル
からアクションを選択し、以下のパラメータを設定します。

パラメーター名 | 内容 |
---|---|
アーカイブ パス | %File%.zip |
圧縮するファイル | %File% |
圧縮レベル | 速度と圧縮の最適なバランス |
パスワード | |
アーカイブ コメント |
アーカイブパスは圧縮されたファイル名です。今回は元のファイルの後ろに.zip を付けるよう指定しています。 圧縮するファイルは対象のファイルパスを指定するので、For each で取得した変数 File を設定します。 その他圧縮レベル、パスワード、アーカイブ コメントは任意の値を設定してください。
フローの全容
最終的にフローは以下のようになります。簡単ですね。

実行結果
上記までで作成したスクリプトを実行すると、フォルダはこのようになります。

ちゃんとファイルだけ、1 件ずつ圧縮できてますね。
みなさんの RPA 開発のお役に立てれば幸いです。
最後まで読んでいただき、ありがとうございました!