【问题标题】:Get Key Value From Firebase To Google Sheets从 Firebase 获取键值到 Google 表格
【发布时间】:2020-05-23 09:16:51
【问题描述】:

这是我的脚本:

function getFacturasClientesExistentes() {
var firebaseUrl = "*****/userselectedsquads/za1/contest1";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
var data = base.getData();

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Items");

var num = 2;
range = sheet.getRange("A"+num+":G"+num+"");
for(var i in data) {
var values = [
[ data[i].dreamteam, data[i].starteam, data[i].p1, data[i].p2, data[i].p3, data[i].p4, ]
];
range.setValues(values);
num += 1;
range = sheet.getRange("A"+num+":G"+num+"");
} 
}

目前我正在检索每个孩子的价值。

但现在我也想检索子值。

我怎样才能找回它?

我想从中检索这些孩子的数据库结构:

【问题讨论】:

    标签: firebase google-apps-script firebase-realtime-database google-sheets


    【解决方案1】:

    问题

    如果我正确理解了您的问题,您希望检索列在constest1 集合下的文档,而不是顶级集合列表。

    解决方案

    如果上述情况属实,您可以向getData() 提供path 参数以深入到指定级别的集合(请参阅注释4 以参考您可能使用的库,因为没有“本机”@987654326 @ GAS 中的服务)。

    优化

    无论出现什么问题,您都应该优化您的代码,使其更加高效和易读(有关详细信息,请参阅下面的注释)。这是更新的代码:

    function getFacturasClientesExistentes() {
      var firebaseUrl = "*****/userselectedsquads/za1/contest1";
    
      var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
      var data = base.getData("za1/contest1");
    
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Items");
    
      var numRows = data.length;
    
      var range = sheet.getRange(2, 1, numRows, 7);
    
      var newValues = data.map(function (item) {
        return [
          item.dreamteam, 
          item.starteam, 
          item.p1, 
          item.p2, 
          item.p3, 
          item.p4
        ];
      });
    
      range.setValues(newValues);
    }
    

    备注

    1. Range 代表一个“实时”集合(从某种意义上说,getValue()getValues() 方法将返回当前设置的值),您不需要重新分配它(当然不是在循环中 - 见注 2) .
    2. getRange()getValue()setValue() 等是 I/O 操作,因此比内存操作慢(在大型集合上慢得多)。因此,请尽量减少它们 - 例如,切勿循环执行它们(除非别无选择)。
    3. 始终使用var 声明变量(注意代码中的range var)(对于constlet,这是不言而喻的)。虽然在非严格模式(JavaScript 的夸克之一)下不会出错,但由于hoisting,没有关键字的变量将被视为全局
    4. 如果FirebaseApp 中的getData()(您使用this 第三方库,对吗?)返回object[],那么您可以直接映射这些值。

    【讨论】:

    • 我要找回zaid(T1)
    • 感谢您的澄清!只是为了确保 - 您想将查询限制为 zaid(T1) 文档?顺便说一句,您使用上述库是否正确?如果是这样,您是否尝试过按照描述指定路径(如果我弄错了,请道歉 - 我自己不使用,但文档建议这样做)
    • 目前我正在检索 zaid(T1)etc 中的文件,现在我想检索文件存在的孩子的文件。
    • 目前正在从比赛中的所有孩子检索文档1,但现在我也想检索该孩子的价值。
    • 好的,如果我明白你的意思,那么在path 参数中更进一步并检索za1 下的所有内容怎么样?您应该收到一组竞赛,其中包含(团队?)您想要的项目作为嵌套对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多