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

API数组导入Google Sheets优化:移除冗余列与时间戳格式化

解决Google Apps Script导入BTC K线数据的两个问题:移除冗余列与时间戳转换

问题分析

你的代码存在冗余循环导致重复写入的问题,同时未处理时间戳格式转换和冗余列清理。下面直接给出修复方案及说明:

修复后的代码

function BTC_1hour() {
  // 请替换为API的完整域名(如对应交易所的官方API地址)
  var url = 'https://api.example.com/api/v1/market/candles?type=1min&symbol=BTC-USDT&startAt=1566703297';
  
  var response = UrlFetchApp.fetch(url);
  var JSONresponse = JSON.parse(response);
  var rawData = JSONresponse.data;

  // 处理数据:转换时间戳 + 移除F、G列(对应数组索引5、6)
  var processedData = rawData.map(row => {
    // 秒级时间戳转毫秒,生成可读日期对象
    const readableTime = new Date(row[0] * 1000);
    // 保留A-E列(索引0-4),剔除F-G冗余列
    return [readableTime, row[1], row[2], row[3], row[4]];
  });

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('1h');

  // 清空原有内容(可选,避免数据重复堆积)
  sheet.clearContents();

  // 一次性写入处理后的数据
  if (processedData.length > 0) {
    sheet.getRange(1, 1, processedData.length, processedData[0].length).setValues(processedData);
    // 强制设置A列日期显示格式
    sheet.getRange(1, 1, processedData.length).setNumberFormat("yyyy-MM-dd HH:mm:ss");
  }
}

关键修复说明

  • 清理冗余列:通过map遍历每条K线数据,仅保留需要的A-E列。如果冗余列位置不同,直接调整return语句中的元素即可(比如要保留后续列,可改为[readableTime, ...row.slice(1,5), ...row.slice(7)])。
  • 转换时间戳:将秒级时间戳乘以1000转为毫秒,用new Date()生成可读日期对象,再通过setNumberFormat指定日期显示格式(可按需修改格式字符串)。
  • 优化脚本效率:删除原代码中无意义的嵌套循环,避免重复写入;仅调用一次setValues提升运行速度;添加清空步骤防止新旧数据重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:15:34