在Google App Script中发送HEAD请求

时间:2015-01-16 05:19:12

标签: javascript google-apps-script http-headers urlfetch

我正在开发一个Google App脚本来确定远程资源的大小而不下载。代码如下

function getRemoteFileSize()
{  
  var params =  { "method" : "head" };
  var resp = UrlFetchApp.fetch("https://www.google.com/images/srpr/logo11w.png", params);
  Logger.log("Remote File Size: " + resp.getAllHeaders()["Content-Length"]);
}

但是,Google App脚本似乎不支持头部请求,并且无法执行上述代码。

除了发出GET请求之外,什么是可行的替代方案?
我对所有建议持开放态度,包括使用具有API的第三方服务

2 个答案:

答案 0 :(得分:2)

您可以尝试通过设置“headers”高级参数来覆盖该方法:

var params = {"method" : "GET", "headers": {"X-HTTP-Method-Override": "HEAD"}};

我从来没有使用过“HEAD”,所以我无法确定这是否有效,但是我已经使用了“PATCH”方法覆盖,并且有了这个功能。

答案 1 :(得分:0)

我发现在我的情况下,我可以使用Range标头请求0个字节,然后检查保存文件大小的响应标头:

var params = {
    method: "GET",
    headers: {
      Range: "bytes=0-0",
    },
  };
  var response = UrlFetchApp.fetch(fileUrl,params);
  var headers = response.getHeaders();
  var fileSizeString = headers['Content-Range']
  var fileSize = +headers['Content-Range'].split("/")[1];

响应标头具有Content-Range=bytes 0-0/139046553作为值,然后我可以使用它转换为整数(139046553)个字节。