我正在尝试使用以下代码获取一个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脚本中尝试了不同的选项值,但没有成功。
非常感谢您的帮助!谢谢!
答案 0 :(得分:1)
此修改如何?
options
。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);