我编写了一个函数,以返回Google Sheet Apps脚本中股票的最新每周收盘价。但是在Google表格中使用此功能时,某些单元格正在获取未定义的数据。我认为这是因为异步UrlFetchApp
。在这里我如何使用诺言?
function getWeeklyClosing(stockName){
var date =new Date()
var endDate = Utilities.formatDate(new Date(), "GMT+1", "yyyy/MM/dd")
var startDate = Utilities.formatDate(new Date(date.getTime()-10*(24*3600*1000)), "GMT+1", "yyyy/MM/dd")
var url ='https://www.quandl.com/api/v3/datasets/BSE/BOM'+stockName+'?start_date='+startDate+'&end_date='+endDate+'&collapse=weekly&api_key=3VCT1cPxzV5J4eGFwfvz';
var options =
{
'muteHttpExceptions': true,
"contentType" : "application/x-www-form-urlencoded",
"headers":{"Accept":"application/json"}
};
var response = JSON.parse(UrlFetchApp.fetch(url, options))
var weeklyEma=response.dataset.data[0][4];
return weeklyEma;
}
问题的标题是询问尝试的解决方案,而不是实际的问题(X-Y问题)。实际的问题是在某些单元格上获取未定义的值。
UrlFetchAp.fetch是异步的假设是错误的。参见Is google apps script synchronous?