如何在Google Sheets的Apps Script中获取正确表头区域设置单元格值?
解决Zonda API数据写入Google Sheets的问题
步骤1:解析API响应的JSON数据
首先需要把API返回的字符串格式JSON转换成JavaScript对象,才能直接读取里面的字段。修改代码如下:
function fetchZondaTicker() { const url = 'https://api.zonda.exchange/rest/trading/ticker/BTC-PLN'; const response = UrlFetchApp.fetch(url); // 解析JSON响应为可操作的对象 const apiData = JSON.parse(response.getContentText()); // 校验API请求是否成功 if (apiData.status !== "Ok") { Logger.log("API请求失败,请检查网络或接口地址"); return; } // 提取核心行情数据 const ticker = apiData.ticker; }
步骤2:整理表头与对应数据
根据API返回的字段,定义你需要的表头和对应数据值。示例选取常用行情字段:
// 定义表头文本和对应数据 const headers = ["交易对", "最高买价", "最低卖价", "当前汇率", "昨日汇率", "更新时间", "最小BTC委托量"]; const dataValues = [ ticker.market.code, parseFloat(ticker.highestBid), // 转换为数值类型方便后续计算 parseFloat(ticker.lowestAsk), parseFloat(ticker.rate), parseFloat(ticker.previousRate), new Date(parseInt(ticker.time)), // 把时间戳转换为可读日期格式 parseFloat(ticker.market.first.minOffer) ];
步骤3:写入Google Sheets单元格
将表头和数据写入指定区域。示例把表头放在第2行,数据追加到表格末尾:
const sheet = SpreadsheetApp.getActiveSheet(); // 可选:写入表头(仅第一次运行需要,之后可注释) sheet.getRange(2, 1, 1, headers.length).setValues([headers]); // 追加新数据到表格最后一行的下方 const lastRow = sheet.getLastRow() + 1; sheet.getRange(lastRow, 1, 1, dataValues.length).setValues([dataValues]);
完整代码
整合后的完整可运行代码:
function fetchZondaTicker() { const url = 'https://api.zonda.exchange/rest/trading/ticker/BTC-PLN'; const response = UrlFetchApp.fetch(url); const apiData = JSON.parse(response.getContentText()); if (apiData.status !== "Ok") { Logger.log("API请求失败"); return; } const ticker = apiData.ticker; const headers = ["交易对", "最高买价", "最低卖价", "当前汇率", "昨日汇率", "更新时间", "最小BTC委托量"]; const dataValues = [ ticker.market.code, parseFloat(ticker.highestBid), parseFloat(ticker.lowestAsk), parseFloat(ticker.rate), parseFloat(ticker.previousRate), new Date(parseInt(ticker.time)), parseFloat(ticker.market.first.minOffer) ]; const sheet = SpreadsheetApp.getActiveSheet(); // 可选:写入表头(仅首次运行需要) sheet.getRange(2, 1, 1, headers.length).setValues([headers]); // 追加数据到表格末尾 const lastRow = sheet.getLastRow() + 1; sheet.getRange(lastRow, 1, 1, dataValues.length).setValues([dataValues]); }
自定义调整说明
- 修改表头位置:调整
getRange中的行号(比如sheet.getRange(1,1,...)将表头放在第1行)。 - 增减字段:直接在
headers和dataValues数组中添加或删除对应条目即可。 - 格式控制:用
parseFloat确保数值字段不是文本格式,new Date将时间戳转为可读日期。
内容的提问来源于stack exchange,提问作者elbingerr
相关产品推荐
相关产品推荐

