WinActorシナリオ作成の基礎 Zipファイルを解凍し、複数のファイルを印刷する-前編-

WinActorの利用を検討されている企業にお話を聞きに行くと、大量のファイルをダウンロードし、手動で印刷するという業務を自動化したいという要件を頻繁に耳にします。
今回は、上記内容についてWinActorによる設定方法を解説します。

 

シナリオを作成するにあたり、
「システム上で承認が完了した請求データの請求書をダウンロードし印刷する」
という業務を設定し、業務運用は下記としました。

・請求依頼を営業担当等が申請

・経理部長が承認

・その後、請求書送付担当者がまとめて印刷し、送付

シナリオの流れ

請求書をシステム上から出力しているという前提で、シナリオの流れは以下のフローを想定します。

請求書発行システムにログインする

  1. 請求書発行システムにログインする
  2. 請求書を出力可能な画面に遷移する
  3. 請求書をZipファイルでまとめて出力する
  4. Zipファイルを解凍する
  5. 出力した請求書を開き、印刷する
  6. 処理が終わったファイルを削除し、4に戻る
  7. すべてのファイルを印刷したら、終了する

フロー1~3はシステムの操作に関することですが、当サイトの過去記事にて弊社クラウド「MA-EYES」を用いた説明を行っているため、そちらを参照してください。

フロー4以降でもそれなりに長尺となりますので、全体を前後編の2回にわけまして、今回は前編として4を、後編で5以降のフローを解説します。

ダウンロードした請求書(Zip圧縮)を解凍する

クラウドERP「MA-EYES」の仕様として、請求書が1ファイルだった場合は単体のExcelファイルがダウンロードされ、請求書が複数ファイルだった場合は、1つのZipファイルとして圧縮された状態でダウンロードされます。

ダウンロードしたファイルの種類がExcelかZipかで以降のシナリオが異なるのですが、請求書が月に1枚ということは考え難いので、「Zipファイルがダウンロードされた」という前提から開始して、以降の処理について説明します。

もし、記事をご覧の方が利用しているシステムからは、複数ファイルが個別のファイルとしてダウンロードされる仕様であるとか、あるいは1つのExcelファイルの複数のシートとして出力されるような場合には、本記事の後半のみをご覧いただければ、同じような処理で対応可能です。

WinActorは同じ自動化でも様々なフローで実現可能ですが、今回はダウンロードしたZipファイルを解凍するまでのフローとして、下記の様に対応しました。

参考までに、本記事では以下を変数として使用しています。

変数名 内容
DLフォルダ Zipファイルがダウンロードされるフォルダのフルパスを初期値に設定
DLファイル記入先 DLしたファイル名を書き込むテキストファイルのフルパスを初期値に設定
DLファイルフルパス ダウンロードしたファイルのフルパスを格納する変数

フロー上で取得するので、初期値は不要

DLファイル解凍先 Zipファイルの中身を展開するフォルダのフルパスを初期値に設定

①「ファイルリスト作成(拡張子指定)」

ファイルをダウンロードした際に、必ず決まったファイル名がつけられている場合は、絶対パスを値あるいは変数で指定すればいいのですが、そういったケースは少ないと思います。

ファイル名を取得するためのライブラリはいくつかありまして、例えば、「ファイル一覧(ファイル名)取得」や「先頭ファイルの取得」といったライブラリを利用するほうがシナリオの手順は短く済むのですが、これらは、フォルダ内にいろいろなファイルがあると想定通りの動きにならず、フォルダを常に空にしておく等の条件が出てきます。

今回ダウンロードしたファイルはZipなので、「ファイルリスト作成(拡張子指定)」というライブラリを使用して説明します。

このライブラリは、「特定のフォルダに入った、指定した拡張子のファイルの一覧をテキストファイルに書き出す」というものです。このライブラリであれば、Zipファイルがフォルダ内に一つであれば、他のExcelやpdfファイルなどが存在したとしても無視してくれます。

以下のように設定します。本記事ではファイルをダウンロードする部分を省略しているので、適当なフォルダに複数のシートを持つ、複数のExcelファイルを格納したZipファイルを用意していただくと確認がしやすいです。

書き出したテキストファイルを開くと、以下のようにダウンロードしたファイルのフルパスが記載されています。

前述したとおり、もし請求書のZip以外に別のZipファイルがあると、複数行のリストになってしまうので、Zipファイルは請求書ダウンロード前に常にゼロにしておく必要があります。

例えば、シナリオの最初で、常にダウンロードフォルダ内のファイルを全部削除するフローや、”請求書”という文字列が入ったファイルのみを抽出することも可能ですが、本記事ではシナリオ実行前にはZipファイルがダウンロードフォルダに1つもないという前提で解説します。

また、出力されたリストは毎回上書きされますので、最後にリストを削除する・消去するようなフローを用意する必要はありません。

②「テキストファイル読込」

フルパスが記載されたテキストファイルを読み込み、変数に格納します。
「テキストファイル読込」のプロパティを下記のように設定します。

③Zip解凍

ダウンロードフォルダ内にあるZipファイル フルパスの特定が完了しました。続いて、Zipを解凍する必要がありますので、「Zip解凍」のライブラリを設定します。

ここまでのシナリオを実行すると、「Zip解凍」の「対象フォルダ」で指定したフォルダに、解凍された個別のZipファイルが置かれていることが確認できます。

④ファイル削除

ダウンロードしたZipファイルは、以降のフローでは不要です。そのままダウンロードフォルダに置いておくと次回のシナリオ実行の際にエラーとなってしまうので、解凍が終わった所で「ファイル削除」のライブラリを用い削除します。

以上で、Zipファイルを解凍する自動化フローの完成です。
後編では、解凍された個別のExcelファイルを印刷する自動化について解説します。