我正在尝试从 URL 获取 gzip 并将其自动导入 Google 表格。gzip 包含一个 CSV 数据文件。
我知道我可以将 CSV 数据导入 Google 表格,但我希望能够省去下载 gzip 并在将文件上传到 Google 表格之前先提取文件的步骤。
所以我的查询:
是否可以将压缩后的 CSV 文件从 URL 直接导入 Google 表格?
如果没有,如何使用 Google Apps 脚本来完成?
我正在尝试从 URL 获取 gzip 并将其自动导入 Google 表格。gzip 包含一个 CSV 数据文件。
我知道我可以将 CSV 数据导入 Google 表格,但我希望能够省去下载 gzip 并在将文件上传到 Google 表格之前先提取文件的步骤。
所以我的查询:
是否可以将压缩后的 CSV 文件从 URL 直接导入 Google 表格?
如果没有,如何使用 Google Apps 脚本来完成?
我能够使用第三方 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]);
}
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
}
如果它对您不起作用,请不要怪我……这只是一个建议;-)