【发布时间】:2015-10-31 17:20:47
【问题描述】:
我正在 Google 电子表格中创建一个扩展程序,并且正在尝试处理 urlFetch() 可能给出的 404 错误。现在它只是在电子表格顶部显示一个弹出窗口,如下所示:
http://i.stack.imgur.com/fvCPC.png
这是我的代码:
function doTestAPICall() {
var headers = {
'Authorization': 'Basic ' + Utilities.base64Encode(user + "/token:" + token)
};
var url = "https://" + subdomain + ".domain.com/api/v2/users/me.json";
var options = {
'contentType': 'application/json',
'method': 'get',
'headers': headers
};
var response = UrlFetchApp.fetch(url, options);
if(response.getResponseCode() == 200){
var json = response.getContent();
var data = JSON.parse(json);
if(data.user.email != user){
return false;
} else {
//User was correctly authenticated
return true;
}
}else{
return false;
}
}
但是,该函数永远不会到达 response.getResponseCode(),因为它已经在 UrlFetchApp.fetch 函数上失败了。关于如何处理此问题的任何想法/建议?
谢谢!
--- 编辑---
根据 Amit 的建议,在 UrlFetchApp 选项中添加 muteHttpExceptions 解决了该问题。
代码现在看起来像这样:
function doTestAPICall() {
var headers = {
'Authorization': 'Basic ' + Utilities.base64Encode(user + "/token:" + token)
};
var url = "https://" + subdomain + ".domain.com/api/v2/users/me.json";
var options = {
'contentType': 'application/json',
'method': 'get',
'headers': headers,
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(url, options);
if(response.getResponseCode() == 200){
var json = response.getContentText();
var data = JSON.parse(json);
if(data.user.email != user){
return false;
} else {
//User was correctly authenticated
return true;
}
}else{
return false;
}
}
【问题讨论】: