Hyperliquid DEX API导入Google Sheets价格列空白问题修复求助
修复Hyperliquid API数据导入Google Sheets时价格列为空的问题
问题原因
你的代码错误假设了Hyperliquid allMids接口的返回结构。实际接口返回的是包含mids数组的对象,数组内每个元素才是包含交易对名称(coin字段)和价格(px字段)的对象,而非直接以交易对为key的键值对结构。之前的遍历逻辑错误地遍历了返回对象的顶层属性,导致无法正确提取价格。
修复方案
- 从API返回数据中提取
mids数组,这是包含所有交易对价格的核心数据源 - 遍历
mids数组,分别获取每个元素的coin(交易对名称)和px(价格)字段 - 改用批量写入方式提升脚本执行效率(避免多次调用
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
相关产品推荐
相关产品推荐

