【发布时间】:2018-01-04 20:18:30
【问题描述】:
我正在为我的加密货币开发跟踪器。在以下函数中,我从 API 获取数据并放入单元格中。例如,当我想以美元计算比特币的价值时,我将公式 =getCryptodata("bitcoin", "price_usd") 放在一个单元格中,它会返回当前价格。
function getCryptoData(coin, api) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var url = 'https://api.coinmarketcap.com/v1/ticker/' + coin + '/';
var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
var json = response.getContentText();
var data = JSON.parse(json);
return parseFloat(data[0][api]);
}
我希望价格每分钟更新一次,因此我为该功能设置了触发器。现在突然好像有问题了。每次触发该功能时,都会出现此错误(在我的邮箱中)。
TypeError:无法从未定义中读取属性“(class)@35c554a5”。
当我从脚本编辑器运行脚本时,我遇到了同样的问题。然后我想出了检查函数中的参数是否定义的想法,如果没有,则给它们一个通用值。谷歌似乎对未定义的参数有问题(尽管它们是在工作表中定义的)。所以我在函数中已有的行之前添加了这些行。
if (typeof coin == 'undefined') {
var coin = "bitcoin";
}
if (typeof api == 'undefined') {
var api = "price_usd";
}
else {
现在错误消失了,但是触发函数时值没有更新。
我错过了什么?
【问题讨论】: