首页 > 解决方案 > 从 Firebase 读取数据到表格

问题描述

使用 .getData() 检索数据后,我无法拆分数据。firebase 数据的格式为:mainTag: subTag1:"["Test1",70,0,18]", subTag2:"["Test2",65,2,18]" 等...这是目前为止正如我设法得到的那样,因为我不确定数据的格式。我不能直接将其设置为单个单元格或一系列单元格的值,因为参数与工作表的方法签名不匹配。我尝试将数据拆分为一个对象,就像它是一个字符串一样,但在记录器中不断记录空值,所以我不确定如何处理它。

function getData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("TestSheet");
  var range = sheet.getRange("A1:D2");
  var firebaseUrl = "https://.....firebaseio.com/";
  var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
  var data = base.getData("mainTag");
  //range.setValues(data);
  Logger.log(data);

Logs: {subTag2=["Test2",65,2,18], subTag1=["Test1",70,0,18]}
}

我的目标是将连续 4 个单元格的值设置为每个子标签内的数据。(A1="Test1", B1=70, C1=0, D1=18) 然后 subtag2 在第 2 行,依此类推。我还没有拆分数据,因为我不确定如何格式化来自 firebase 的数据以便能够在 .setValues() 中使用

标签: firebasegoogle-sheets

解决方案


您需要遍历子标签并访问属于每个键的值

这可以通过Object.keys()最好地实现。

样本:

  var data = base.getData("mainTag");
  var array = [];
  for(var i in data) {
    var newdata = Object.keys(data[i]).map(function (key) { 
      return data[i][key]; 
    }); 
    array.push(newdata);    
  }
  var range = sheet.getRange(1,1, array.length, array[0].length);
  range.setValues(array);

推荐阅读