UrlFetchApp zip文件

时间:2019-03-02 22:12:08

标签: csv google-apps-script google-sheets zip

我正在尝试使用以下代码获取一个zip文件:

  var options = {
    'method' :'get',
    'validateHttpsCertificates' : false,
    'escaping': true
  };
  var url = "https://www.propertypriceregister.ie/website/npsra/ppr/npsra-ppr.nsf/Downloads/PPR-ALL.zip/$FILE/PPR-ALL.zip" 
  var zipblob = UrlFetchApp.fetch(url, options).getBlob(); 
  var unzipblob = Utilities.unzip(zipblob); 

并收到错误Address unavailable: https://www.propertypriceregister.ie/website/npsra/ppr/npsra-ppr.nsf/Downloads/PPR-ALL.zip/$FILE/PPR-ALL.zip

我通常会使用wget下载文件-例如

wget --no-check-certificate 'https://www.propertypriceregister.ie/website/npsra/ppr/npsra-ppr.nsf/Downloads/PPR-ALL.zip/$FILE/PPR-ALL.zip'

效果很好-解压缩的文件是csv。

使用escaping=false等在apps脚本中尝试了不同的选项值,但没有成功。

非常感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:1)

此修改如何?

修改点:

  • 在您的情况下,从您的wget示例命令来看,我认为不需要options
  • 下载zip文件时,从响应头中发现mimeType为application/x-zip。对于Utilities.unzip(),需要将mimeType修改为application/zip
    • 在这种情况下,我使用setContentTypeFromExtension(),因为该文件的文件名包括扩展名。

当以上几点反映到您的脚本中时,它如下所示。

修改后的脚本:

var url = "https://www.propertypriceregister.ie/website/npsra/ppr/npsra-ppr.nsf/Downloads/PPR-ALL.zip/$FILE/PPR-ALL.zip" 
var zipblob = UrlFetchApp.fetch(url).getBlob(); // Modified
zipblob.setContentTypeFromExtension(); // Added
var unzipblob = Utilities.unzip(zipblob);

参考: