【发布时间】:2019-10-13 16:08:27
【问题描述】:
我在 Google Sheet Apps Script 中编写了一个函数来返回股票的最新每周收盘价。
但是当在谷歌表格中使用它时,一些单元格会得到未定义的数据。
但有时相同的单元格会获得正确的值。无法理解这里有什么问题。
当我从 googlesheet 单元格执行函数时,还有什么选项可以调试我的代码?
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;
}
【问题讨论】:
-
如果您阅读urlfetch的标签页,您就会明白您的问题是错误的
-
@AntonDementiev 我不认为这与提到的问题重复,恕我直言,这是我在answer 中提到的 x-y 问题@
-
如果您使用
getWeeklyClosing作为自定义函数,当=getWeeklyClosing(value)的多个公式放入单元格时,这些公式将与异步过程一起运行。在这种情况下,可以认为多个自定义函数中的每一个UrlFetchApp都是以异步进程运行的。但我无法理解undefined data和asynchronous UrlFetchApp之间的关系。你能解释一下吗?如果你想用同步过程运行它们,那么将值作为数组提供怎么样?如果我误解了您的问题,我深表歉意。 -
@TheMaster 好的,现在了解 urlFetch。但是现在我的问题有什么解决方案吗?我怎样才能得到正确的数据?
标签: google-apps-script google-sheets google-sheets-formula urlfetch custom-function