如何在Apps Script中将API返回的秒级Epoch时间转可读格式后写入谷歌表格
最优方案:用数组map转换Kucoin秒级时间戳
Kucoin开放API返回的蜡烛图数据中,第一个字段是秒级Epoch时间戳,在Google Apps Script中可以通过数组的map()方法高效转换为人类可读时间,比手动for循环更简洁易维护。
完整实现代码
function fetchKucoinBTCUSDT() { // 目标工作表 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("BTC-USDT"); // Kucoin蜡烛图API地址(这里以1分钟K线、100条数据为例) const apiEndpoint = "https://api.kucoin.com/api/v1/market/candles?type=1min&symbol=BTC-USDT&limit=100"; // 发起API请求并解析数据 const apiResponse = UrlFetchApp.fetch(apiEndpoint); const parsedData = JSON.parse(apiResponse.getContentText()); // 校验API返回状态 if (parsedData.code !== "200000") { throw new Error(`API调用失败: ${parsedData.msg}`); } // 核心:转换时间戳并格式化数据 const formattedCandles = parsedData.data.map(candle => { // 秒级转毫秒级,生成Date对象(表格会自动识别为时间格式) const readableTime = new Date(candle[0] * 1000); // 替换原时间戳为可读时间,保留其余K线数据 return [readableTime, ...candle.slice(1)]; }); // 写入工作表(清空旧数据后写入) targetSheet.clearContents(); targetSheet.getRange(1, 1, formattedCandles.length, formattedCandles[0].length) .setValues(formattedCandles); }
关键细节说明
为什么用map而非for循环?
- 代码更简洁:无需手动管理循环索引和临时数组,一行遍历+转换完成。
- 可读性更高:语义化的
map()明确表达"转换数组每个元素"的意图。 - 性能无差异:对于Kucoin API返回的常规数据量(≤1000条),map和for循环的执行效率几乎一致,无需担心性能问题。
自定义时间格式(可选)
如果需要固定格式的字符串时间(如yyyy-MM-dd HH:mm:ss),可以用Utilities.formatDate()替换Date对象:const formattedCandles = parsedData.data.map(candle => { const timestampMs = candle[0] * 1000; // 指定时区(这里用脚本时区,也可改为"UTC") const timeStr = Utilities.formatDate( new Date(timestampMs), Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss" ); return [timeStr, ...candle.slice(1)]; });时区注意事项
- 直接写入Date对象时,谷歌表格会自动使用当前表格的时区显示时间。
- 若需统一UTC时间,可在创建Date时指定,或在
formatDate中将时区参数设为"UTC"。
内容的提问来源于stack exchange,提问作者Welchums
相关产品推荐
相关产品推荐

