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

如何将Firebase数据按列而非行保存到Google Sheet?

解决方案

要实现数据按列展示,核心是调整数据数组的结构和写入范围的参数,具体修改如下:

修改后的完整代码

function getAllData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var firebaseUrl = "firebase url";
  var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
  var data = base.getData(); // 直接获取单条数据,无需包裹成数组

  var in_time = Utilities.formatDate(new Date(), "GMT+8", "HH:mm:ss");
  var in_date = Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd");

  // 构造列展示的数组:每个数据项单独作为一行(单列)
  var columns = [
    [data.PUMP],
    [data.Tank1],
    [data.Tank2],
    [data.Tank3],
    [data.Valve1],
    [data.Valve2],
    [data.Valve3],
    [data.RandomMain],
    [data.RandomNumber1],
    [data.RandomNumber2],
    [data.RandomNumber3],
    [data.RandomNumber4],
    [in_date],
    [in_time]
  ];

  // 写入范围:从第2行第1列开始,共14行(对应14个数据项)、1列
  sheet.getRange(2, 1, columns.length, 1).setValues(columns);
}

关键修改点

  1. 简化数据获取:原代码把base.getData()包裹成数组,但实际每次获取的是单条数据,直接赋值给data即可,无需多余循环。
  2. 调整数组结构:将原来「一行多列」的数组格式,改成「多行单列」的二维数组,确保每个数据项单独占一行,实现垂直列展示。
  3. 修改写入范围参数:getRange(起始行, 起始列, 行数, 列数),现在行数匹配数据项总数,列数设为1,对应单列写入逻辑。

如果后续需要批量同步多条Firebase数据(按列堆叠),可在循环中把每条数据的列数组依次追加到columns中,再调整写入范围的行数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:10:40