Google apps script UrlFetchApp.fetch(url)失败
我有一点GAS代码在执行UrlFetchApp.fetch(url)时失败了——我想 在UrlFetchApp.fetch(url)中使用时,url的字符长度有限制。我的函数失败了,我怀疑它与url的长度有关。它超过100个字符 下面的代码是指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);
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());
}
}