想在同一张 Google 表格里追踪比特币、以太坊等代币的实时行情,却不想手动复制粘贴?跟着本篇教程,用 12 分钟就能通过 CoinMarketCap API 自动刷新加密货币价格,还能把菜单按钮加到表格顶部,随点随更新,完全免费。
为什么要自动更新
只要你是以下三类人之一,这招就能让爱:
- 同时持有 5 支以上代币,一两个平台查花眼;
- 需要做周报或月度绩效,要给投资人展示收益表;
- 刚入门 DeFi/NFT,想练习链上投资数据整理。
把价格接入 Google 表格后,设置好 1 分钟、5 分钟级轮询,即可避免「官网宕机」或「钱包 App 卡死」带来的延迟。
动手前的准备
| 需要账号 | 费用 | 使用人数上限 |
|---|---|---|
| Google 账号 | 免费 | 无限制 |
| CoinMarketCap 免费计划 | 免费 | 上限 3 万调用/月 |
⚠️ 若你的表格由多人协作,建议使用 可编辑权限 的专属谷歌账号,避免脚本被别人误删。
第1步:获取 CoinMarketCap API 密钥
- 打开 CoinMarketCap 注册页面,
- 选择 “Free Plan”,填写邮箱并验证;
- 进入「Account → API Keys」,点击 【Generate Key】。
- 完成后复制密钥:长字符串
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,记好别泄露。
✅ 免费额度每天可请求 3 万次,足够个人使用 100 年有余。
第2步:建立 Google 表格与脚本
- 新建 Google 表格,命名
CoinMarketCap,避免与其他 Sheet 重名; - 右上角 Extensions → Apps Script;
- 删除自动生成的
function myFunction()内容,替换成下方完整代码。
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Crypto 价格')
.addItem('🔁 刷新实时价格', 'fetchCoinPrices')
.addToUi();
}
function fetchCoinPrices() {
const API_KEY = '把你的 API Key 粘在这'; // <- 修改
const COIN_LIST = ['BTC','ETH','BNB','ADA','SOL', // 自定义,保持大写
'AVAX','MATIC','DOT','LINK'];
const URL = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest?symbol=' + COIN_LIST.join();
const options = {
method : 'GET',
headers : {
'X-CMC_PRO_API_KEY': API_KEY,
'Accept' : 'application/json'
}
};
try {
const res = UrlFetchApp.fetch(URL, options);
const json = JSON.parse(res.getContentText()).data;
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheets()
.filter(s => s.getName() === "CoinMarketCap")[0];
sheet.getRange(1, 1, sheet.getLastRow(), 3).clear(); // 清空旧数据
sheet.getRange(1, 1).setValue('代币');
sheet.getRange(1, 2).setValue('美元报价');
sheet.getRange(1, 3).setValue('更新时间');
let row = 2;
for (const symbol of COIN_LIST) {
if (json[symbol]) {
sheet.getRange(row, 1).setValue(symbol);
sheet.getRange(row, 2).setValue(json[symbol].quote.USD.price);
sheet.getRange(row, 3).setValue(new Date());
row++;
}
}
SpreadsheetApp.getActiveSpreadsheet().toast(`已刷新 ${row-2} 支代币报价`);
} catch (e) {
SpreadsheetApp.getUi().alert('请求失败:\n' + e.toString());
}
}- 右上角 保存(Ctrl+S) → 命名为
cryptoSheet,系统会弹出权限授权,点击「允许」即可。 - 回到表格刷新页面,顶部会多出一个 「Crypto 价格」 菜单,内含 「刷新实时价格」 按钮。
第3步:自动化与安全优化
1. 让脚本定期执行
进入 Apps Script → 左边时钟图标(Triggers)→「添加触发器」:
- 选择
fetchCoinPrices - 指定 每日每 15 分钟 自动执行
- 注意免费账户限额:高频率超过 20 次/分钟会返回
429
2. 误差控制小技巧
- 若要做图表,把 更新时间列格式改为
HH:mm:ss,方便比对延迟; - 用
'=AVERAGE(B:B)'统计同一代币 24 小时均价,再进行 收益百分比计算; - 遇到 Google 报错 429 时,减少
COIN_LIST长度,把冷门币分到另一张 Sheet。
常见问题与解答 Q&A
Q1:免费额度够用吗?我持有 50+ 代币。
A:一次请求最多支持 120 种代币的交易对,若提币对单价敏感请拆分成两组并设置不同脚本。
Q2:脚本要翻墙才能用吗?网络被封怎么办?
A:Google Apps Script 服务器位于国外,国内网络无墙。若谷歌被国内 DNS 污染,可用校园网或 4G 试运行。
Q3:能一次性拉「历史全量日线」吗?
A:免费的 API 只返回「最新价」,如需历史 K 线,CDN 获取 CSV 然后导入 Google Sheet 即可。
Q4:如何把价格自动转成「人民币」?
A:在 fetchCoinPrices 里新增一条 json[symbol].quote.CNY.price,或将美元栏乘以 =GOOGLEFINANCE("CURRENCY:USDUSD")/GOOGLEFINANCE("CURRENCY:USDCNY")。
Q5:多人共享表格会不会泄露 API 密钥?
A:脚本与数据分离,别人只能看到价格结果;若担忧,可把脚本放在专用账户,再通过 IMPORTRANGE 引用价格列。
一条龙案例:自动计算总资产
把手里各钱包的代币 余额 填在 D 列:
- A列:代币名(BTC、ETH…)
- B列:实时价格(脚本自动更新)
- C列:UTC 更新时间
- D列:持仓枚数(手动输入)
- E列:
=B2*D2得到美元市值
最后在 「资产汇总」 Sheet 加 =SUM('CoinMarketCap'!E:E),总盘子净值就此一目了然。
👇 利用同样思路,还可用脚本一键闪兑和税务计算,省时 80%。
结语
无需购买付费插件,也无需安装任何扩展,通过 Google Apps Script + CoinMarketCap 免费 API,你就能把加密币价格稳稳锁死在表格里。记得把常用币种加入脚本,15 分钟或点一下即可完成刷新,从此日常记账和投资复盘一气呵成。