(
我想做的是扩展这段代码,使其不那么硬编码,而是动态的。对coinmarketcap api密钥进行硬编码可能更容易。
我想在谷歌表单中做以下事情(它不允许我在函数中传递参数并调试它,所以我不知道发生了什么,它返回时未定义(
name | 价格 |
---|---|
BTC | 41665 |
ADA | 1.9 |
您可以使用代码=BTC 将parseData.data.BTC.quote.USD.price
更改为parseData.data[code].quote.USD.price
试试这个:=getCryptoPrice("BTC")
function getCryptoPrice(code) {
var sh1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prices[DontDelete]");
var sh2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Prices[DontDelete]");
//Make sure that you got the API key from Coinmarketcap API dashboard and paste it in sheet_1 on cell A1
var apiKey = sh1.getRange(1, 1).getValue();
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol="+code
var requestOptions = {
method: 'GET',
uri: 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest',
qs: {
start: 1,
limit: 5000,
convert: 'USD'
},
headers: {
'X-CMC_PRO_API_KEY': apiKey
},
json: true,
gzip: true
};
var httpRequest = UrlFetchApp.fetch(url, requestOptions);
var getContext = httpRequest.getContentText();
var parseData = JSON.parse(getContext);
return(parseData.data[code].quote.USD.price)
}
编辑:刷新
方法#1例如,您可以通过在A1中添加一个伪参数作为复选框来刷新值,并将其作为=getCryptoPrice("BTC",$A$1)
包含在函数的第二个参数中
然后,在这个自定义函数中定义一个触发器(每小时(
function refresh(){
var chk = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange('A1')
chk.setValue(!chk.getValue())
}
方法#2公式=getCryptoPrice("BTC",$A$1)
与A1中的=now()
相同。然后转到电子表格的设置,计算选项卡,选择更改时重新计算和每小时