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

修改CoinMarketCap谷歌表格App Script,支持拖拽批量读取加密货币行情

解决CoinMarketCap谷歌表格脚本动态读取加密货币代码的问题

需求

修改现有CoinMarketCap谷歌表格脚本,实现在单元格调用并向下拖拽时,自动读取对应行另一列的加密货币代码(ticker),返回对应价格。

原脚本(固定查询BTC)

function getLatestBTCPrice() {
  var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest";
  var apiKey = 'YOUR_API_KEY'; // 替换为你的API密钥
  var headers = {
    "X-CMC_PRO_API_KEY": apiKey,
    "Accept": "application/json"
  };

  var parameters = {
    "symbol": "BTC"
  };

  var response = UrlFetchApp.fetch(url + "?" + Object.keys(parameters).map(key => key + '=' + parameters[key]).join('&'), {'headers': headers});
  var json = JSON.parse(response.getContentText());
  var btcPrice = json.data.BTC.quote.USD.price;

  return btcPrice;
}

你的尝试脚本及核心问题

你修改后无法成功,问题出在两处:

  1. 固定读取A3单元格,拖拽时不会自动匹配当前行的ticker
  2. 使用json.data.ETC.quote.USD.price这种点语法访问数据,无法动态替换为变量ticker

你的尝试脚本:

function getTickerPrice() {
  var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest";
  var apiKey = 'YOUR_API_KEY'; // 替换为你的API密钥
  var headers = {
    "X-CMC_PRO_API_KEY": apiKey,
    "Accept": "application/json"
  };

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var ticker = sheet.getRange('A3').getValue();
  var parameters = {
    "symbol": ticker
  };

  var response = UrlFetchApp.fetch(url + "?" + Object.keys(parameters).map(key => key + '=' + parameters[key]).join('&'), {'headers': headers});
  var json = JSON.parse(response.getContentText());
  var tickerPrice = json.data.ETC.quote.USD.price;

  return tickerPrice;
}

正确修改后的脚本

function getTickerPrice(ticker) {
  // 处理空输入的情况
  if (!ticker) return "";
  
  var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest";
  var apiKey = 'YOUR_API_KEY'; // 替换为你的API密钥
  var headers = {
    "X-CMC_PRO_API_KEY": apiKey,
    "Accept": "application/json"
  };

  var parameters = {
    "symbol": ticker.toUpperCase() // 统一转为大写,避免大小写不匹配
  };

  // 构建请求URL,处理特殊字符
  var queryString = Object.keys(parameters).map(key => key + '=' + encodeURIComponent(parameters[key])).join('&');
  var response = UrlFetchApp.fetch(url + "?" + queryString, {'headers': headers});
  var json = JSON.parse(response.getContentText());

  // 用方括号语法动态访问ticker对应的数据,同时处理无效代码情况
  if (json.data && json.data[ticker.toUpperCase()]) {
    return json.data[ticker.toUpperCase()].quote.USD.price;
  } else {
    return "无效代码";
  }
}

关键修改说明

  • 函数接收参数:将函数定义改为getTickerPrice(ticker),表格调用时可直接传入单元格值,拖拽时自动匹配当前行
  • 动态访问JSON:用json.data[ticker.toUpperCase()]替代点语法,实现根据变量ticker动态获取数据
  • 容错处理:
    • 空输入返回空字符串
    • 统一ticker为大写,避免大小写不匹配错误
    • 检测ticker是否有效,无效时返回提示文本
  • 优化URL构建:用encodeURIComponent处理参数,避免特殊字符导致请求失败

使用方法

在需要显示价格的单元格(如B3)输入:

=getTickerPrice(A3)

向下拖拽该单元格,脚本会自动读取对应行A列的ticker,返回对应加密货币的价格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:15:23