提问人:Scott 提问时间:9/1/2023 更新时间:9/1/2023 访问量:64
Google Apps 脚本:仅在浏览器/编辑器中提取失败,并出现 401 错误
Google Apps Script: Fetch Fails Only in Browser/Editor with 401 Error
问:
在 Google Apps 脚本中通过 UrlFetchApp.fetch 发出 GET 请求会返回 401 截断服务器响应错误,但仅在编辑器/浏览器窗口中运行时才会返回。
我在 Google Apps 脚本中有以下代码,该代码对我们的某个供应商进行 API 调用:
function test() {
//Get session ID from vendor. This always works.
var sesResponse = JSON.parse(UrlFetchApp.fetch("https://www2.pcrecruiter.net/rest/api/access-token/?Username=redacted&Password=redacted&DatabaseId=redacted.redacted&ApiKey=abcdefghijklmnopqrstuvwxyz&AppId=123456"));
sessionID = sesResponse.SessionId;
console.log("sessionID = " + sessionID);
//Make GET request to one of their API endpoints using acquired session ID. This returns a 401 Truncated Server Response
var response = JSON.parse(UrlFetchApp.fetch("https://www2.pcrecruiter.net/rest/api/candidates/?SessionID=" + sessionID + "&Query=MobilePhone%20co%201234567899&ResultsPerPage=100").getContentText());
console.log(response);
}
获取会话 ID 始终是成功的。但是,对 /candidates 终结点的第二个提取请求将返回以下错误:
Exception: Request failed for https://www2.pcrecruiter.net returned code 401. Truncated server response: {"errors":" at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object Description, Object HelpFile, Object HelpContext)\r\n ... (use muteHttpExceptions option to examine full response)
一时兴起,我尝试设置一个“每分钟”触发器来执行上面完全相同的代码,它运行得完美无缺。我们办公室的静态 IP 以及 Google 的官方 IP 列表 (https://www.gstatic.com/ipranges/goog.txt) 都在供应商的白名单上,因此不应阻止来自任何一个来源的请求。
为什么 UrlFetchApp GET 请求在仅从浏览器/GAS 编辑器执行时会返回 401 错误?
答: 暂无答案
评论