Al ser Firestore una base de datos no relacional puede ser un poco engorroso navegar los datos dentro de la consola de Firebase.
Una buena forma de visualizar, filtrar y validar los datos que ingresan a Firestore es con una simple planilla donde podemos aplicar fórmulas en un formato conocido.
Para lograr esto en una planilla de calculo de Google, vamos a utilizar la siguiente libreria: FirestoreGoogleAppsScript
https://github.com/grahamearley/FirestoreGoogleAppsScript
Codigo de referencia del video, verificar que contamos con una hoja llamada «Registros» donde se escribiran los datos:
const hojaRegistros = 'Registros';
function onOpen() {
// La función onOpen se ejecuta automáticamente cada vez que se carga un Libro de cálculo
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [];
menuEntries.push({
name : "Leer Datos",
functionName : "update"
});
menuEntries.push(null);
ss.addMenu("Actualizar Datos", menuEntries);
}
function update() {
getFireStore();
}
function writeInSpreadSheet(data, current_sheet) {
var numRows = data.length;
if (numRows > 0) {
var numCols = data[0].length;
var Avals = current_sheet.getRange("B1:B").getValues();
var last_row = Avals.filter(String).length;
last_row++;
current_sheet.getRange(last_row, 1, numRows, numCols).setValues(data);
}
}
function getFireStore() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(hojaRegistros);
const allDocuments = firestore.getDocuments("registros");
var data = [];
// for each column and row in the document selected
for(var i = 0; i < allDocuments.length; i++){
var document_key = allDocuments[i].name.split("/").pop();
var nombre = allDocuments[i].fields["nombre"].stringValue;
//var agregado = new Date(allDocuments[i].fields["agregado"].timestampValue).toISOString();
data.push([
document_key,
nombre,
//agregado,
]);
}
if (data.length > 0) {
// write to ss
writeInSpreadSheet(data, sheet);
}
}
Por ultimo debemos agregar un archivo adicional con el contenido de la cuenta de servicio, para luego inicializar la libreria en una variable firebase:
var config = {
"project_id": "ejemplo-escribir-leer-drive",
"private_key_id": "0451f9......891",
"private_key": "-----BEGIN PRIVATE KEY-----\n....",
"client_email": "flujos-de-da......ount.com",
"client_id": "102555....",
};
var firestore = FirestoreApp.getFirestore(config.client_email, config.private_key, config.project_id);