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

如何在Google Sheets自定义函数中提取加密货币API的JSON数据?

如何从Kraken API返回的JSON中提取特定行情数据(Google Sheets脚本)

嘿,你已经迈出了第一步——成功调用Kraken API获取BTC/USD的行情数据,但现在整串JSON挤在一个单元格里确实没法直接用对吧?我来给你拆解一下怎么提取你需要的具体数据~

核心问题:你需要先解析JSON字符串

你当前的函数只是把API返回的原始文本直接返回了,我们得先把这串文本转换成JavaScript能识别的对象,才能从中挑出需要的字段。

第一步:修改代码解析JSON

先给你的函数加上JSON解析的步骤,代码改成这样:

function getkrakenbtc() {
  var myUrl = "https://api.kraken.com/0/public/Ticker?pair=XBTUSD";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  // 新增:把JSON字符串转成可操作的对象
  var data = JSON.parse(jsonString);
}

第二步:了解Kraken API的返回结构

Kraken的Ticker API返回的数据结构是这样的:

  • 所有行情数据都在result字段下
  • 你请求的XBTUSD对,在返回里对应的键是XXBTZUSD(Kraken的内部标识)
  • 每个交易对的行情里包含多个字段,比如c是最新成交价(数组,第一个元素是价格,第二个是成交量)、a是买一价、b是卖一价等

第三步:提取你需要的具体数据

比如你想获取最新成交价,可以修改函数直接返回这个值:

function getkrakenbtc() {
  var myUrl = "https://api.kraken.com/0/public/Ticker?pair=XBTUSD";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var data = JSON.parse(jsonString);
  
  // 先检查API是否返回错误
  if (data.error.length > 0) {
    return "API错误:" + data.error.join(", ");
  }
  
  // 提取最新成交价,转成数字方便后续计算
  var lastPrice = Number(data.result.XXBTZUSD.c[0]);
  return lastPrice;
}

其他常用字段的提取示例

如果你需要其他数据,直接替换对应的字段就行:

  • 买一价(最高买盘):Number(data.result.XXBTZUSD.a[0])
  • 卖一价(最低卖盘):Number(data.result.XXBTZUSD.b[0])
  • 24小时最高价:Number(data.result.XXBTZUSD.h[1])
  • 24小时最低价:Number(data.result.XXBTZUSD.l[1])

进阶:一次性返回多个数据到多个单元格

如果想同时获取多个行情数据,比如最新价、买一、卖一,可以返回一个数组,这样Google Sheets会自动把数据填充到相邻单元格:

function getkrakenbtc() {
  var myUrl = "https://api.kraken.com/0/public/Ticker?pair=XBTUSD";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var data = JSON.parse(jsonString);
  
  if (data.error.length > 0) {
    return ["API错误:" + data.error.join(", ")];
  }
  
  var ticker = data.result.XXBTZUSD;
  // 返回数组,每个元素对应一个单元格
  return [
    Number(ticker.c[0]), // 最新成交价
    Number(ticker.a[0]), // 买一价
    Number(ticker.b[0]), // 卖一价
    Number(ticker.h[1]), // 24小时最高价
    Number(ticker.l[1])  // 24小时最低价
  ];
}

使用的时候,选中一行的5个单元格,输入=getkrakenbtc()然后按Ctrl+Shift+Enter(数组公式),就能把数据分别填充进去啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:52:14