我尝试通过 cmc api 将加密货币价格读入谷歌表格。
我通过应用程序脚本获得了这个功能
function getCryptoData(x) {
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?convert=EUR";
var apiKey = 'xyz'; // Replace with your API key
var headers = {
"X-CMC_PRO_API_KEY": apiKey,
"Accept": "application/json"
};
var response = UrlFetchApp.fetch(url, {'headers': headers});
var json = JSON.parse(response.getContentText());
return json.data[x].quote.EUR.price; // Example: Fetches the price of the x-th listed cryptocurrency in EUR
}
现在我不想要 json 的第 x 个数据条目的价格,我想要 id = x 的货币的价格。我认为这是一个 json 字典,但我无法正确理解。例如,BTC 的 id = 1,ETH 的 id = 1027。
这是一个基本问题,我对此很陌生,所以请耐心等待。这可以理解吗?
我尝试用 for 和 if 遍历字典,但没有成功。
for id in data['id']
if id == x
return json.data[].quote.EUR.price;
所以,我不知道如何引用正确的字典条目。
这是这个网址的json的完整输出,据我所知:https://docs.google.com/spreadsheets/d/1h9PmgIJWt0L5cD2pYRLOwEKhUi-K_OFY-C-n6vQEAcY/edit?usp=sharing
我尝试了你的代码,它似乎丢失了并且有错误。我修改了您的
python
并将其转换为 Javascript
并添加了 forEach()
函数来迭代每个数据,如果 ID 在您的数组中匹配,它将返回 EURO 的 CRYPTO 值以匹配您的数组脚本json.data[x].quote.EUR.price
.
代码.gs
function getCryptoData(id) {
var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?convert=EUR";
var apiKey = 'xyz'; // Replace with your API key
var headers = {
"X-CMC_PRO_API_KEY": apiKey,
"Accept": "application/json"
};
var response = UrlFetchApp.fetch(url, { 'headers': headers });
var json = JSON.parse(response.getContentText());
json.data.forEach(x => {
if (x.id == id) {
console.log(x.name, x.quote.EUR.price)
return x.quote.EUR.price
}
})
}
示例输出:
参考: