Firebase RealtimeDB в Google Sheets через AppScript - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь записать данные Firebase RealtimeDB в электронную таблицу Google Sheets через Google Appscript.

Вот так выглядит моя RealtimeDB: Firebase RealtimeDB

Моя цель this

Я попробовал следующий фрагмент кода:

   function writeSheets() {
    var firebaseUrl = "https://<mydatabase>.firebaseio.com/Attendees";
    var base = FirebaseApp.getDatabaseByUrl(firebaseUrl);
    var data = base.getData();



    var ss = SpreadsheetApp.openById("<mySheet>");
    var sheet = ss.getSheetByName("Sheet1");

    var num = 2;
    range = ss.getRange("A"+num+":B"+num+"");
    for(var i in data) {
      var values = [[ data[i].ID, data[i].Name ] ];
      range.setValues(values);
      num += 1;
      range = sheet.getRange("A"+num+":B"+num+"");
      } 

 console.log(JSON.stringify(data));

    }

Кажется, для печати пустых ячеек в Google Sheet. Не совсем уверен, почему.

Любой вклад будет принята с благодарностью. Спасибо.

РЕДАКТИРОВАТЬ:

Журнал консоли:

[20-04-08 20: 46: 26: 102 HKT] TypeError: Невозможно прочитать свойство 'ID' с нулевым значением на листах записи (код: 13: 27)

1 Ответ

0 голосов
/ 08 апреля 2020

Существует дополнительный null в данных. Фильтр это и отображение массива объектов в 2D массив и setValues ​​2D массив :

const data =  [null,{"ID":1001,"Name":"Bob"},{"ID":1069,"Name":"Steve"},{"ID":1420,"Name":"Bill"}];
const out = data.filter(Boolean).map(Object.values);
console.log(out);

/*SetValues the entire array*/
//sheet.getRange(1,1,out.length, out[0].length).setValues(out);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...