问题描述
我正在尝试使用 Google Apps Script 和 Alpha Vantage API 来提取 JSON 值以最终放置在 Google 表格中。对于某些 Alpha Vantage API 端点,我无法提取所需的值。
这是我想使用的 JSON 端点之一:
https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=IBM&apikey=demo
请注意,这只是他们的演示链接之一。
对于这个 API,我只想提取“价格”值。
tctx.someMock.On("addProd",mock.Anything).Return(nil,nil)
...
tctx.someMock.AssertCalled(t,"addProd",mock.MatchedBy(func(i interface{}) bool {
p := i.(*product.AddProductParams)
return p.ID() == "someid"
})).Return(nil,nil)
https://www.alphavantage.co/query?function=BALANCE_SHEET&symbol=IBM&apikey=demo
我现在在 Google App Script 编辑器中的内容是这方面的第一步(JS 新手),但不完全是从这里开始的步骤。在第一个 API 中命名对象的方式(例如“05.price”)让我失望,因为我不认为我可以使用点表示法来调用该值,因为它在 API 中的命名约定。 (如果这不正确,请告诉我)。
{
"Global Quote": {
"01. symbol": "IBM","02. open": "128.9400","03. high": "130.9950","04. low": "127.7900","05. price": "130.0600","06. volume": "5835669","07. latest Trading day": "2021-03-18","08. prevIoUs close": "129.0300","09. change": "1.0300","10. change percent": "0.7983%"
}
}
感谢您对此工作流程的任何帮助。
解决方法
function testAPI() {
var api_url = "https://www.alphavantage.co/queryfunction=GLOBAL_QUOTE&symbol=IBM&apikey=demo";
var json = UrlFetchApp.fetch(api_url);
var obj = JSON.parse(json);
//I assume everything above this is all correct if it's not that's your problem
Logger.log(obj["Global Quote"]["05. price"]);
}
测试:
function testAPI() {
//var api_url = "https://www.alphavantage.co/queryfunction=GLOBAL_QUOTE&symbol=IBM&apikey=demo";
//var json = UrlFetchApp.fetch(api_url);
var json = '{"Global Quote": {"01. symbol": "IBM","02. open": "128.9400","03. high": "130.9950","04. low": "127.7900","05. price": "130.0600","06. volume": "5835669","07. latest trading day": "2021-03-18","08. previous close": "129.0300","09. change": "1.0300","10. change percent": "0.7983%"}}';
var obj = JSON.parse(json);
Logger.log(obj["Global Quote"]["05. price"]);
}