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

Hyperliquid DEX API导入Google Sheets价格列空白问题修复求助

修复Hyperliquid API数据导入Google Sheets时价格列为空的问题

问题原因

你的代码错误假设了Hyperliquid allMids接口的返回结构。实际接口返回的是包含mids数组的对象,数组内每个元素才是包含交易对名称(coin字段)和价格(px字段)的对象,而非直接以交易对为key的键值对结构。之前的遍历逻辑错误地遍历了返回对象的顶层属性,导致无法正确提取价格。

修复方案

  1. 从API返回数据中提取mids数组,这是包含所有交易对价格的核心数据源
  2. 遍历mids数组,分别获取每个元素的coin(交易对名称)和px(价格)字段
  3. 改用批量写入方式提升脚本执行效率(避免多次调用getRange.setValue的性能损耗)

修改后的完整代码

function getHyperliquidData() {
  try {
    var payload = {
      type: 'allMids'
    };
    var payloadString = JSON.stringify(payload);
    var options = {
      method: 'post',
      contentType: 'application/json',
      payload: payloadString
    };

    var response = UrlFetchApp.fetch('https://api.hyperliquid.xyz/info', options);
    var data = JSON.parse(response.getContentText());

    // 关键:提取mids数组,这才是包含交易对和价格的数据源
    if (data.mids && Array.isArray(data.mids)) {
      writePairsInfoToSheet(data.mids);
    } else {
      Logger.log('API返回数据格式异常,未找到mids数组');
    }
  } catch (error) {
    Logger.log('获取API数据失败:', error);
  }
}

function writePairsInfoToSheet(midsData) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();

  // 准备表头和数据行
  var outputData = [['Pair', 'Last Price']];
  midsData.forEach(function(item) {
    // 提取coin作为交易对名称,px作为价格
    outputData.push([item.coin, item.px]);
  });

  // 批量写入数据,比逐行写入高效得多
  sheet.getRange(1, 1, outputData.length, 2).setValues(outputData);
}

验证说明

  • 运行getHyperliquidData函数后,Google Sheets的第一列会显示交易对名称(如BTC、ETH),第二列会显示对应的当前价格
  • 如果API返回格式有变动,可以通过查看Logger.log输出的原始数据结构来调整字段提取逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:02:25