読者です 読者をやめる 読者になる 読者になる

技術のメモ帳

気が向いたときに書いてます

[GAS]複数のファイルをzip形式に圧縮する

Google Apps Script

今回は、複数のURLのリソースを取得し、zip形式に圧縮する関数を書いてみます。

function createZipFileByUrls(urls) {
  try {
    var blobs    = Object.keys(urls).map(function(i){ return UrlFetchApp.fetch(urls[i]).getBlob() }),
        filename = new Date().getTime()+'.zip',
        blob     = Utilities.zip(blobs, filename);
    Drive.Files.insert({ title: blob.getName(), mimeType: blob.getContentType() }, blob)
    Logger.log('success');
  } catch(ex) {
    Logger.log(ex.toString());
  }
}

function createZipFileByUrlsTest() {
  var urls = [
    'https://www.google.com/favicon.ico',
    'https://www.google.com/images/srpr/logo3w.png'
  ];
  createZipFileByUrls(urls);
}

なお、生成したzipファイルは、Google Driveにアップロードしています。

スクリプト実行前に[リソース]→[Googleの拡張サービス]から、Drive APIを有効化し、デベロッパーコンソールからも有効化する必要があります。

動作確認

問題なく、zipファイルが作成されていました。

ダウンロードして解凍すると、指定したファイルが含まれていますね。

こちらのZIP形式での圧縮は、使い方次第で、いろいろと活用できそうです。

今回は紹介しなかったですが、ZIPファイルの解凍もUtilities.unzip(zip)で簡単に実行できます。

詳しくは公式リファレンスをご覧ください。

参考リンク

Class Utilities  |  Apps Script  |  Google Developers