发出从 App Script UrlFetchApp.fetch 命令返回的解析字典

Issue parsing dictionary returned from App Script UrlFetchApp.fetch command

通过简单的 API 调用解析从 UrlFetchApp.fetch 返回的字典时出现问题。

代码如下:

var HTTPResponse = UrlFetchApp.fetch('<myURL>', options); 

其中选项包括 headers 和表单数据,并且 HTTPResponse 被转换为 JSON object,如下所示:

var results = JSON.parse(HTTPResponse);

来自 returns 的 HTTPResponse 是这样的:

{"Category 1": "Value 1", "Category 2": "Value 2", 
"Category 3": "Value 3", "Processing Team": "Processing Team 1”}

然后,当我这样做时:结果["Category 1"] 我得到 "undefined" 作为值,这意味着 "Category 1" 不是字典中的项目。

有关 object 或 API 调用返回的内容类型的问题阻止了该词典的解析。可以在 Python 解释器中解析同一个字典。

我错过了什么?看起来很明显。

感谢任何提示!

你不应该解析 returned HTTPResponse

您应该做的第一件事是检查响应代码是否为 200,然后将内容获取为文本,然后将文本解析为 JSON。 HTTPResponse 实际上不是 returned 有效载荷。使用 HTTPResponse class.

getContentText() 方法检索 return
var HTTPResponse = UrlFetchApp.fetch('<myURL>', options);

if (HTTPResponse.getResponseCode() !== 200) {
  throw new Error("Request Failed: " + HTTPResponse.getContentText());
  return;
}

var results = HTTPResponse.getContentText();

results = JSON.parse(results);

HTTPResponse 不是 JavaScript JSON。它是一个对象,如果使用 typeof 测试数据类型,它将评估为一个对象,但它无法正确解析。当您尝试解析 HTTPResponse 时,您正在尝试解析已经是对象的东西,它不是 JavaScript 对象,而是 Apps 脚本 Class.