Google apps script UrlFetchApp.fetch(url)失败

Google apps script UrlFetchApp.fetch(url)失败,google-apps-script,Google Apps Script,我有一点GAS代码在执行UrlFetchApp.fetch(url)时失败了——我想 在UrlFetchApp.fetch(url)中使用时,url的字符长度有限制。我的函数失败了,我怀疑它与url的长度有关。它超过100个字符 下面的代码是指 function uploadToDrive(url, folderid, filename, fileDesc) { var msg = ''; try { var response = UrlFetchApp.fetch(url);

我有一点GAS代码在执行UrlFetchApp.fetch(url)时失败了——我想

在UrlFetchApp.fetch(url)中使用时,url的字符长度有限制。我的函数失败了,我怀疑它与url的长度有关。它超过100个字符

下面的代码是指

function uploadToDrive(url, folderid, filename, fileDesc) {
  var msg = '';

  try {
    var response = UrlFetchApp.fetch(url);

  } catch(err) {

  };

  if (response.getResponseCode() === 200) {

       var folder = DriveApp.getRootFolder();
      if (folderid) {
        folder = DriveApp.getFolderById(folderid);
      }
      var blob = response.getBlob();
      var file = folder.createFile(blob);
      file.setName(filename);

      file.setDescription(fileDesc); 

      var headers = response.getHeaders();
      var content_length = NaN;
      for (var key in headers) {
        if (key.toLowerCase() == 'Content-Length'.toLowerCase()) {
          content_length = parseInt(headers[key], 10);
          break;
        }
      }

      var blob_length = blob.getBytes().length;
      msg += 'Saved "' + filename + '" (' + blob_length + ' bytes)';
      if (!isNaN(content_length)) {
        if (blob_length < content_length) {
          msg += ' WARNING: truncated from ' + content_length + ' bytes.';
        } else if (blob_length > content_length) {
          msg += ' WARNING: size is greater than expected ' + content_length + ' bytes from Content-Length header.';
        }
      }
      msg += '\nto folder "' + folder.getName() + '".\n';
    }
   else {
    msg += 'Response code: ' + response.getResponseCode() + '\n';
  }

  return file.getUrl();
}
函数uploadToDrive(url、文件夹ID、文件名、fileDesc){
var msg='';
试一试{
var response=UrlFetchApp.fetch(url);
}捕捉(错误){
};
if(response.getResponseCode()==200){
var folder=DriveApp.getRootFolder();
if(folderid){
folder=DriveApp.getFolderById(folderid);
}
var blob=response.getBlob();
var file=folder.createFile(blob);
file.setName(文件名);
file.setDescription(fileDesc);
var headers=response.getHeaders();
var内容_长度=NaN;
for(在标题中键入var){
if(key.toLowerCase()=='Content Length'.toLowerCase()){
content_length=parseInt(头[key],10);
打破
}
}
var blob_length=blob.getBytes().length;
msg+='已保存'+filename+''('+blob_length+'字节)';
如果(!isNaN(内容长度)){
if(水滴长度<内容长度){
msg+='警告:从'+content_length+'字节截断';
}else if(水滴长度>内容长度){
msg+='警告:大小大于内容长度标题中的预期'+content_length+'字节';
}
}
msg+='\nto文件夹“'+文件夹.getName()+'”\n';
}
否则{
msg+='响应代码:'+Response.getResponseCode()+'\n';
}
返回文件.getUrl();
}

该链接生成一个响应代码404,但只有在try块中fetch方法成功时,才设置响应变量。在假定响应变量具有可访问的属性和方法之前,请尝试验证该变量:

function fetching() {
  var url = "<some url resource>";

  try {
    var response = UrlFetchApp.fetch(url);
  } catch (err) {
// why catch the error if you aren't going to do anything with it?
    Logger.log(err);
  } finally {
    if (response && response.getResponseCode() === 200) {
      Logger.log("Should be 200, got " + response.getResponseCode());
    } else {
      Logger.log("Fetching Failed: Exception thrown, no response.");
    }
  }
}

希望这有帮助


文档:

这些信息对您的情况有用吗?顺便说一句,为了正确理解你说的
失败
,你能提供错误消息和脚本的错误行吗?第5行-var response=UrlFetchApp.fetch(url)-返回错误代码404。我用一个300多字符长的url尝试了这个方法,它成功了。问题可能与此特定url有关。你能分享一下这个url吗?这里是:这个url返回一个404。这个问题与气体限值无关。
function fetching() {
  //dns exception
  //var = "googqdoiqijwdle.com"
  //200
  var url = "google.com";
  //404
  //var url = "https://www.jotform.com/uploads/Administrator_System_sysadmin/92960977977584/4480552280228238115/BoE%20Test%20File.docx"

  try {
    var response = UrlFetchApp.fetch(url, {
      muteHttpExceptions: true
    });
  } catch (err) {
    Logger.log(err);
  }

  if (response) {
    response.getResponseCode() === 200 ?
      Logger.log("Should be 200, got " + response.getResponseCode()) :
      Logger.log("Anything but 200, got " + response.getResponseCode());
  }
}