You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script调用CoinMarketCap API获取加密货币价格报错求助

修复后的CoinMarketCap加密货币价格获取函数

你的函数存在几个关键问题,以下是修复后的完整代码及问题说明:

修复后的代码

function getCryptoPrice(ticker) {
  // 默认使用ETH,避免重复声明变量
  const targetTicker = ticker || "ETH";
  const encodedTicker = encodeURI(targetTicker);
  // 构造正确的API请求URL,整合必要参数
  const url = `https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=${encodedTicker}&convert=USD`;
  
  // 适配UrlFetchApp的标准请求配置
  const requestOptions = {
    method: 'GET',
    headers: {
      // 替换为你自己的CoinMarketCap Pro API密钥
      'X-CMC_PRO_API_KEY': 'YOUR_ACTUAL_API_KEY',
      'Accept-Encoding': 'gzip'
    }
  };
  
  try {
    const httpRequest = UrlFetchApp.fetch(url, requestOptions);
    const getContext = httpRequest.getContentText();
    const parseData = JSON.parse(getContext);
    
    // 修正数据解析路径:data对象以加密货币symbol为键
    if (parseData.data && parseData.data[targetTicker]) {
      return parseFloat(parseData.data[targetTicker].quote.USD.price);
    } else {
      throw new Error(`未找到加密货币 ${targetTicker} 的数据`);
    }
  } catch (error) {
    // 捕获错误并返回,便于表格内调试
    return `错误: ${error.message}`;
  }
}

原函数的问题及修复细节

  • 无效请求参数:原requestOptions中的uri、qs、json、gzip是第三方请求库(如request.js)的参数,并非Google Apps Script的UrlFetchApp支持的配置,已全部移除并替换为标准配置。
  • 数据解析路径错误:CoinMarketCap返回的data对象是以加密货币symbol为键的结构(如data.ETH),原代码直接访问data.quote会触发undefined错误,现已修正为正确的路径。
  • 重复变量声明:函数参数已包含ticker,内部无需再次声明,改用const targetTicker避免变量混淆。
  • API密钥占位无效:原代码中的'api'是无效密钥,需替换为你实际的CoinMarketCap Pro API密钥。
  • 缺失错误处理:新增try/catch块捕获请求或解析异常,方便在表格中查看具体错误信息。
  • URL参数整合:将convert=USD直接整合到请求URL中,符合GET请求的参数传递规范。

使用说明

  1. 替换代码中的YOUR_ACTUAL_API_KEY为你从CoinMarketCap获取的Pro API密钥。
  2. 在Google表格中调用时,输入=getCryptoPrice("BTC")可获取比特币的USD价格,不传参数默认返回ETH价格。

内容的提问来源于stack exchange,提问作者Jarod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:41:56