javascript - 调用按键 :Value pair in Google Apps Script is returning "Undefined" instead of the value

标签 javascript google-apps-script finance

var api_key_id = '1234567890'
function open(ticker, date) {
  ticker="TSLA";
  date="2019-01-14";
  var url = "https://api.polygon.io/v1/open-close/" + ticker + "/" + date + "?apiKey=" + api_key_id;
  var response = UrlFetchApp.fetch(url);
  var data = response.getContentText();
  Logger.log(data);
}

当上面的代码运行时,它会记录以下内容:

{"status":"OK","from":"2019-01-14T03:30:00Z","symbol":"TSLA","open":342,"high":343.3,"low":335.37,"close":338.93,"afterHours":336.2148,"volume":4425458}

但是当我尝试这样做时:

Logger.log(data.open);

输出为:

undefined

“data”变量实际上不是一个对象吗?我错过了什么?

编辑:找到解决方案: 将 getContentText() 的结果解析为 JSON 允许调用所需的变量,请参见下文。感谢chuckx指出了这一点!

var api_key_id = '1234567890'
function open(ticker, date) {
  var url = "https://api.polygon.io/v1/open-close/" + ticker + "/" + date + "?apiKey=" + api_key_id;
  var response = UrlFetchApp.fetch(url);
  var data = response.getContentText();
  var json = JSON.parse(data);
  Logger.log(json.open);

最佳答案

HTTPResponse.getContextText()返回一个字符串,因此它实际上不是一个对象。

由于此 API 返回 JSON,因此您可以使用 JSON.parse() 解析字符串。然后以您期望的方式与返回的对象进行交互。

...
var apiResponse= JSON.parse(response.getContentText());
Logger.log(apiResponse.open);

关于javascript - 调用按键 :Value pair in Google Apps Script is returning "Undefined" instead of the value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59757082/

相关文章:

javascript - 如何创建一个包含帖子和每个帖子回复的论坛

javascript - 将鼠标悬停在 div 上时尝试突出显示不同的列

javascript - 富文本编辑器,粗体文本使用 strong 标签

google-apps-script - 如何使用 A1 表示法忽略 getRange()getValues() 中的空行

google-apps-script - 以编程方式将容器绑定(bind)脚本添加到 Google Docs 文件

perl - 如何使用 Perl 从 yahoo 下载选项数据?

javascript - 样式化 Vuetify 选择器

javascript - 使用谷歌表单从手机捕获图片/图像

api - 投资组合管理 API

java - IFX 标准 Java 实现