【问题标题】:Write from Google Firebase to Google Sheets using Google Apps script使用 Google Apps 脚本从 Google Firebase 写入 Google 表格
【发布时间】:2016-08-28 19:22:04
【问题描述】:

尝试检索存储在 google firebase 中名为 entries 的节点下的表单条目,并使用 google sheet 中的脚本编辑器附加到 google sheet。

我已将 FirebaseApp 库添加到 google sheet 脚本编辑器。然后我的代码如下所示:

function getAllData() {
  var firebaseUrl = "https://myapp.firebaseio.com/";
  var secret = "pCOCwKCC582jpqdZe2EqPqnW3IAd3UyO9oB4uaEL2";
  var base = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
  var data = base.getData();
    Logger.log(data);
}

当我运行它时,什么也没有发生。有什么想法吗?

接下来,我需要将从 firebase 返回的数据添加到 google sheet。我正在使用此代码通过 sheet api 执行此操作,但是我不确定这在 google 脚本编辑器中是如何工作的?

  function addEntries() {
    gapi.client.sheets.spreadsheets.values.append({
      spreadsheetId: '10lyQpQtEA7euCfdU2isrqB_bgPuy-eSbW74h7oDP3ko',
      range: "Sheet1!A1:D100",
      majorDimension: "ROWS",
        "values": [
          ["testa", "testb", "testc", "testd"]
        ],
      valueInputOption: 'USER_ENTERED'
    }).then(function(response) {

    }, function(response) {
      appendPre('Error: ' + response.result.error.message);
    });
  }

【问题讨论】:

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


    【解决方案1】:

    我使用的是最新的 Firebase 版本。这个 sn-p 代码对我有用。

    function getFacturasClientesExistentes() {
    var firebaseUrl = "https://test.firebaseio.com/FacturasBLP/clienteExistente";
    var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
    var data = base.getData();
    
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Facturas Clientes Existentes");
    
    var num = 2;
    range = sheet.getRange("A"+num+":F"+num+"");
    for(var i in data) {
      var values = [
      [ data[i].fecha, data[i].sucursal, data[i].cantidad, data[i].cliente, data[i].correo, data[i].estatus ]
      ];
      range.setValues(values);
      num += 1;
      range = sheet.getRange("A"+num+":F"+num+"");
      } 
    }
    

    一些注意事项:

    1. 我之前已经在电子表格中为我的数据编写了标题
    2. 在从 A 到 F 的 range = sheet.getRange("A"+num+":F"+num+""); 行中,我有我的标题

    【讨论】:

    • 有人可能会在“range = sheet.getRange("A"+num+":F"+num+"");”中得到错误。要删除它,请使用:"range = ss.getRange("A"+num+":F"+num+"");"
    【解决方案2】:

    我希望这对某人有所帮助,这对我有用。

    function writeSheets() {
      var ss = SpreadsheetApp.openById("10lyQpQtEA7euCfdU2isrqB_bgPuy-eSbW74h7oDP3ko");
      var sheet = ss.getSheets()[0];
      var firebaseUrl = "https://myapp.firebaseio.com/";
      var secret = "pCOCwKCC582jpqdZe2EqPqnW3IAd3UyO9oB4uaEL2";  // get this from firebase project settings
      var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
      var data = base.getData();
      var keys = Object.keys(data.entries);
      var sheetRow = [];
      var entryKeys;
      for (index in keys) {
        sheetRow = [];
        entryKeys = Object.keys(data.entries[keys[index]])
        for (i in entryKeys) {
          sheetRow.push(data.entries[keys[index]][entryKeys[i]]);
        }
        //Logger.log(sheetRow);
        sheet.appendRow(sheetRow);                            
      }
    }
    

    注意:为了使此代码正常工作,您需要按照这些说明在脚本编辑器中安装 firebaseapp 库,https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase

    【讨论】:

    • 嗨!我正在尝试运行您的功能,但不知何故无法正常工作:var keys = Object.keys(data.entries);(通过undefined argument
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多