Firebase è un servizio di Google che supporta gli sviluppatori web e mobile integrando una serie di strumenti di sviluppo di backend fondamentali, tra i quali, appunto, il database.
Si tratta di un database cloud NoSQL fornito da Google per l'archiviazione e la sincronizzazione dei dati. Il servizio è gratuito (fino ad una certa soglia, Firebase Pricing) e scalabile su tutte le piattaforme in circolazione, ovvero è possibile utilizzare lo stesso database di Firebase per progetti Web ma anche Android e iOS.
Lo scopo di questo tutorial è quello di mostrare, tramite un semplice esempio, come poter scrivere e leggere dati in Firebase da Google Apps Script.
Percorrendo rapidamente i passi iniziali per soddisfare i requisiti di piattaforma in modo da poter procedere con la stesura del nostro codice, è necessario in prima istanza creare un progetto in Firebase dalla relativa console: Firebase Console.
Annotarsi l'indirizzo web del database, dalla tab "DATI", nel caso specifico dell'esempio: https://apps-script-test-d8d80.firebaseio.com/, in quanto servirà utilizzarlo successivamente per poter interrogare il database, in scrittura e lettura, lato Apps Script.
Per poter soddisfare la richiesta di autenticazione è necessario disporre di una chiave di sicurezza che si trova selezionando: l'icona dell'ingranaggio >> Impostazioni progetto >> Account di servizio >> Database secret.
Nota: nel caso in cui si tenti di scrivere su Firebase da Apps Script e venga restituito l'errore 'ERROR: Error: Could not parse auth token.' significa che la chiave utilizzata non è quella giusta, ovvero non sono stati seguiti i passaggi descritti sopra per recuperarla (può capitare seguendo vecchi tutorial in quanto la chiave secret, per modifiche da parte di Google all'interfaccia di Firebase, era raggiungibile in precedenza in un'altra locazione ed è facile, per questo motivo, confondersi con altri tipi di chiave, una tra tutti quella delle API web).
Possiamo passare adesso alle lavorazioni lato Apps Script.
La prima fase è sicuramente l'aggiunta della libreria per Google Apps Script, basata sulle REST API di Firebase, che fornisce l'accesso al Realtime Database di Firebase.
Dall'editor di script di Google Apps Script selezionare la voce di menu Risorse >> Librerie... e nella modal che si aprirà inserire la seguente chiave di progetto:
MYeP8ZEEt1ylVDxS7uyg9plDOcoke7-2l
Di seguito i codici del nostro script di esempio, successivamente descritti:
File main.js
function doGet() {
return HtmlService.createTemplateFromFile('index').evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
// Autenticazione
var firebaseUrl = "https://apps-script-test-d8d80.firebaseio.com/";
var secret = "dZj7XGo..................";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
// Scrivi in Firebase
function writeInFirebase(form) {
var name = form.name;
var surname = form.surname;
var email = form.email;
var phone = form.phone;
var country = form.country;
var password_crypted = ''
var message = "";
var email_appoggio, user_getted;
var bln_user_invalid = false;
var dataToImport = {};
dataToImport = { email:email, phone:phone, country:country }
base.setData('users/' + name+'-'+surname, dataToImport);
}
// Leggi da Firebase
function readFromFirebase() {
var list = "";
var data = base.getData();
if (data == undefined) { return list;}
list = JSON.stringify(data.users);
return list;
}
Il codice del file HTML e molte altre informazioni su come connettersi al database di Firebase con Google Apps Script continuano nel mio libro "Punta in alto con... Google Apps Script" (gli script sono scaricabili, funzionanti e liberamente utilizzabili nelle proprie applicazioni):
Troverai altre informazioni sull'argomento come:
- le fasi dettagliate ed illustrate per la corretta creazione di un progetto in Firebase ed il recupero delle necessarie chiavi di autenticazione;
- l'uso del metodo getDatabaseByUrl, setDate e dell'oggetto dataToImport;
- la funzione personalizzata che ho creato per recuperare le informazioni dal database di Firebase;
- la corretta sintassi e la gestione del risultato nella pagina HTML;
- le regole di sicurezza predefinite e personalizzate;
- l'inserimento di librerie e la scelta della versione;
- alcuni errori che possono comparire quando si tenta di scrivere dati in Firebase e la relativa soluzione;
- connettori ad altri database e sistemi di memorizzazione dei dati;
- e tutta una serie di informazioni utili con immagini chiare ed esemplificative.
...E QUESTO È SOLO QUANTO RIFERITO ALLA CONNESSIONE CON FIREBASE DA GOOGLE APPS SCRIPT!
ACQUISTA ORA IL LIBRO SU AMAZON:
Se sei pronto a diventare un esperto nella programmazione in Google Apps Script non posso fare altro che augurarti una buona lettura e soprattutto... Buon divertimento!
Provando ad inserire l'ipotetico utente 'Mario Rossi' e relative informazioni segute dall'inserimento dell'ipotetico utente 'Lugi Bianchi' e poi 'Giuseppe Verdi', anch'essi corredati del resto delle informazioni richieste, il risultato all'interno del database di Firebase (così come gestito dal codice dello script di esempio del presente tutorial) sarà il seguente (Fig. 1):
Attenzione che, nel caso in cui la chiave utilizzata fosse già presente nel database (ad esempio: users/Mario-Rossi) e compilassimo il form con nuove informazioni per questo stesso utente, i nuovi dati andrebbero a sovrascrivere i precedenti.
Ciao Michele,
seguendo, direttamente dal tuo libro, le istruzioni per creare il progetto in Firebase al momento di generare il Database Secret ottengo il seguente avviso:
"I database secret non sono più validi e utilizzano un generatore di token Firebase precedente. Aggiorna il tuo codice sorgente con l'SDK di Firebase Admin."
Ulteriori informazioni mi rinviano alle istruzioni per aggiungere "the Firebase Admin SDK to Your Server"
Non capisco se le tue indicazioni sono ancora valide e in caso contrario come installare Firebase Admin SDK per le mie Google apps script.
Grazie
Ciao Antonio,
essendo una questione legata principalmente alle funzionalità di Firebase piuttosto che Apps Script di per se ho effettuato una ricerca in rete ed ho trovato discussioni che parlano di quel messaggio di errore già dal 2016, escluderei pertanto che le indicazioni fornite nella guida/libro non siano valide, ad ogni modo ci sono molti post a riguardo senza risposta, l'unico che ho trovato che sembra dare qualche indicazione in più, con suggerimenti alla risoluzione, è il seguente: https://stackoverflow.com/questions/46102962/firebase-database-secrets-on-google-apps-script.