LoginSignup
7
14

More than 5 years have passed since last update.

GASでgzipファイルを解凍する

Last updated at Posted at 2018-07-10

背景

google apps script でgoogle drive内に保存しているgzipファイルを簡単に解凍できるかと思いきや、少し工夫が必要だったのでメモ。zipファイルは簡単にできるのに。。。

zipファイルを解凍するには

比較として、まずはzipファイルを解凍する場合。

function unZipIt() {
  //zipファイルが保存してあるfolderidを指定
  var folder = DriveApp.getFolderById("0xxxxxxxxxxxxxxxxxx0");
  //解凍するzipファイルを指定
  var zipFile = folder.getFilesByName("xxxxxxx.zip");
  var fileBlob = zipFile.next().getBlob();
  var unZippedfile = Utilities.unzip(fileBlob);
  var saveFile = folder.createFile(unZippedfile[0]);
}

基本的に上記のやり方で問題なく処理できるハズですが、エラーになるようならContent Typeを指定。

function unZipIt() {
  //zipファイルが保存してあるfolderidを指定
  var folder = DriveApp.getFolderById("0xxxxxxxxxxxxxxxxxx0");
  //解凍するzipファイルを指定
  var zipFile = folder.getFilesByName("xxxxxxx.zip");
  var fileBlob = zipFile.next().getBlob();
  //エラーになる場合はcontent typeを指定
  fileBlob.setContentType("application/zip");
  var unZippedfile = Utilities.unzip(fileBlob);
  var saveFile = folder.createFile(unZippedfile[0]);
}

gzipファイルを解凍するには

Content Typeはx-gzipを指定。
また、gzipされたtsvファイルを保存するときにもポイントが。

function unGzipIt() {
  //gzipファイルが保存してあるfolderidを指定
  var folder = DriveApp.getFolderById("0xxxxxxxxxxxxxxxxxx0");
  //解凍するgzipファイルを指定
  var gzipFile = folder.getFilesByName("xxxxxxx.gz");
  var fileBlob = gzipFile.next().getBlob();
  //ここポイント!!content typeはx-gizp
  fileBlob.setContentType("application/x-gzip");
  var unGzippedfile = Utilities.ungzip(fileBlob);

  //解凍後のファイル設定値
  var contentType   = "text/tsv";
  var saveFilename   = "xxxxxxx.tsv";
  var charSet       = "UTF8";

  //ここポイント!!解凍後のファイルを変換してから保存
  var blobFile = Utilities.newBlob("", contentType, saveFilename).setDataFromString(unGzippedfile.getDataAsString(), charSet);
  var saveFile = folder.createFile(blobFile);
}
7
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
14