如何通过CMC API按ID获取加密货币价格并写入Google Sheets
通过CoinMarketCap API根据ID获取加密货币价格(Google Apps Script实现)
你需要将原有按列表索引取价格的函数,改为按CoinMarketCap的加密货币ID(如BTC为1、ETH为1027)获取对应EUR价格,以下是修正方案:
原有代码的核心问题
原函数里return json.data[x].quote.EUR.price是直接取数组第x个索引的条目,但数组索引和CMC的加密货币ID完全不对应,必须遍历数组匹配ID才能拿到正确数据。
修正后的完整函数
function getCryptoData(targetId) { var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?convert=EUR"; var apiKey = 'xyz'; // 替换成你的API密钥 var headers = { "X-CMC_PRO_API_KEY": apiKey, "Accept": "application/json" }; var response = UrlFetchApp.fetch(url, {'headers': headers}); var json = JSON.parse(response.getContentText()); var cryptoList = json.data; // 遍历加密货币列表,匹配目标ID for (var i = 0; i < cryptoList.length; i++) { if (cryptoList[i].id == targetId) { return cryptoList[i].quote.EUR.price; } } // 未找到匹配ID时的返回值 return "未找到对应ID的加密货币"; }
关键说明
- 将参数名改为
targetId,避免和数组索引混淆,语义更清晰 - 使用标准JavaScript for循环遍历
json.data数组,逐个校验每个条目的id属性 - 匹配到目标ID后直接返回对应价格;遍历结束未匹配则返回提示信息
你之前错误循环的问题
你写的循环不符合JavaScript语法规范:
- 不存在
for id in data['id']这种写法,正确遍历数组需用索引循环或for...of语法 - 即使遍历逻辑正确,
json.data[]这种写法也无法正确引用数组条目,必须指定具体索引
内容的提问来源于stack exchange,提问作者miguel
相关产品推荐
相关产品推荐

