Google apps script 如何捕获UrlFetchApp.fetch异常
是否有任何方法可以从Google apps script 如何捕获UrlFetchApp.fetch异常,google-apps-script,urlfetch,Google Apps Script,Urlfetch,是否有任何方法可以从UrlFetchApp.fetch捕获异常 我想我可以使用response.getResponseCode()来检查响应代码,但是我不能,例如,当出现404错误时,脚本不会继续,只是停在UrlFetchApp.fetch为什么不使用try-catch并在catch块中处理错误 try{ //Your original code, UrlFetch etc } catch(e){ // Logger.log(e); //Handle error
UrlFetchApp.fetch
捕获异常
我想我可以使用
response.getResponseCode()
来检查响应代码,但是我不能,例如,当出现404错误时,脚本不会继续,只是停在UrlFetchApp.fetch
为什么不使用try-catch并在catch块中处理错误
try{
//Your original code, UrlFetch etc
}
catch(e){
// Logger.log(e);
//Handle error e here
// Parse e to get the response code
}
编辑:此参数现在为空
当返回非200状态代码时,可以使用未记录的高级选项“muteHttpExceptions”禁用异常,然后检查响应的状态代码。有关更多信息和示例,请访问。技巧是传递的
muteHttpExceptions
参数
下面是一个示例(未经测试):
由于某些原因,如果URL不可用(例如,您尝试使用的服务已关闭),它看起来仍在抛出错误,因此您可能仍需要使用
try/catch
块。您可以手动解析捕获到的错误,但不建议这样做。捕获异常(在禁用muteHttpExceptions
的情况下引发)时,错误对象的格式如下:
{
"message": "Request failed for ___ returned code___. Truncated server response: {___SERVER_RESPONSE_OBJECT___} (use muteHttpExceptions option to examine full response)",
"name": "Exception",
"fileName": "___FILE_NAME___",
"lineNumber": ___LINE_NUMBER___,
"stack": "___STACK_DETAILS___"
}
如果出于某种原因不想使用muteHttpExceptions
,可以捕获异常e
,查看e.message
,将文本分为“截断的服务器响应:”和“(使用muteHttpExceptions选项检查完整响应)”、JSON.parse()和,返回的对象将是api调用返回的错误
我不建议将其置于muteHttpExceptions
之上,只是想展示以这种方式获取错误对象的最佳方法
无论如何,请尝试捕获您的
UrlFetchApp.fetch()
调用,以确保捕获未处理的异常,如404。感谢您的快速响应。当出现异常时,是否有可能找出响应代码?您将在e中获得一个错误字符串,您可以对其进行解析以获取错误代码。但是解析e
并不是那么简单,因为UrlFetchApp将响应封装在文本消息中。。我不建议这种方法。
{
"message": "Request failed for ___ returned code___. Truncated server response: {___SERVER_RESPONSE_OBJECT___} (use muteHttpExceptions option to examine full response)",
"name": "Exception",
"fileName": "___FILE_NAME___",
"lineNumber": ___LINE_NUMBER___,
"stack": "___STACK_DETAILS___"
}