我正在尝试从网址抓取gzip并将其自动导入Google电子表格。
gzip包含一个CSV数据文件。
我知道我可以将CSV数据导入到Google电子表格中,但我希望能够在将其上传到Google电子表格之前,先删除我必须下载gzip并提取文件的步骤。
所以我的问题是,是否可以将URL中的gzip压缩文件直接导入到Google电子表格中?如果没有,如何使用Google Apps脚本完成此操作?
答案 0 :(得分:4)
我能够使用第三方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]);
}
答案 1 :(得分:3)
在GAS中有一个名为unzip的未记录的实用程序,我知道它可以解压普通的.zip文件,但不知道是否支持GNU zip ...也许它值得试一试? 这是我为google文档/驱动器中的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
}
如果它不适合你,请不要责怪我......这只是一个建议; - )