Apex+JSZipでSalesforceの添付ファイルをZipしてダウンロード

Salesforce開発で、帳票や添付ファイルのZipし、一括ダウンロード機能を実装したい時がありませんか。
ApexがZip機能をサポートしてないため、HerokuやAWSなどの外部サービスを経由してZipするのは、 解決策としてよく考えられていますが、 実はSalesforceだけでもファイルZipすることが可能です。
本postはApex+JSZipでの実装方法を紹介します。

処理概要として、以下の感じです。
1.JS側から、WebServiceを呼び出して、対象ファイルのBlob内容をリクエストします。
2.JSZipライブラリで各ファイルをZipします。
3.作ったZipファイルデータをWebServiceに送信して、Documentを新規作成します。
4.Documentダウンロードページに遷移し、ファイルダウンロードします。

早速実装してみましょう。

添付ファイルデータ用意

Accountに二つ添付ファイル(apex PDF.pdfとapex Word.docx)を新規作成します。 Account

ApexクラスWS_Util、WS_ZipUtil作成

WS_Util.cls

WS_ZipUtil.cls

jQuery、JSZip静的リソース作成

jQueryJSZipのJSファイルをダウンロードし、静的リソースに追加します。

VFページ作成

動作してみます

Demo Zipファイルダウンロードできました~!
zip

SourceCode

Download from Github

追記更新

ApexコードだけでファイルのZip実装方法を探していますか? 下記の投稿をご参照いただければと思います。
ApexだけでSalesforceの添付ファイルをZipしてダウンロード

Enjoy It!