4

我正在尝试从 URL 获取 gzip 并将其自动导入 Google 表格。gzip 包含一个 CSV 数据文件。

我知道我可以将 CSV 数据导入 Google 表格,但我希望能够省去下载 gzip 并在将文件上传到 Google 表格之前先提取文件的步骤。

所以我的查询:

是否可以将压缩后的 CSV 文件从 URL 直接导入 Google 表格?

如果没有,如何使用 Google Apps 脚本来完成?

4

2 回答 2

5

我能够使用第三方 javascript 库 pako 对 gzip 压缩文件进行膨胀(解压缩)。这是代码:

  eval(UrlFetchApp.fetch('https://cdn.rawgit.com/nodeca/pako/master/dist/pako.js').getContentText());

  var charData = UrlFetchApp.fetch("<url to a .gz file>").getContent();

  var binData = [];
  for (var i = 0; i < charData.length; i++) {
    binData.push(charData[i] < 0 ? charData[i] + 256 : charData[i]);
  }

  var data = pako.inflate(binData);

  var decoded = '';
  for (var i = 0; i < data.length; i++) {
    decoded += String.fromCharCode(data[i]);
  }
于 2016-12-20T05:36:42.547 回答
4

GAS 中有一个名为 unzip 的未记录实用程序,我知道它可以解压缩普通的 .zip 文件,但不知道是否支持 GNU zip……也许值得一试?这是我为我的谷歌文档/驱动器中的 zip 编写的快速测试

function testzip(){
var files=DocsList.getRootFolder().find('Sans titre.txt.zip');
var zipblob=files[0].getBlob();
var unzipblob = Utilities.unzip(zipblob);
var unzipstr=unzipblob[0].getDataAsString();// it is a text file
DocsList.createFile('Sans titre.txt',unzipstr);// I kept the original name to make it simple
}

如果它对您不起作用,请不要怪我……这只是一个建议;-)

于 2012-06-18T21:59:21.770 回答