Microsoft Excel

Microsoft Excel

martedì 19 maggio 2015

"Stampa di unione" con google form e google script per ottenere preventivi automatizzati


La "stampa di unione" è il processo che ci permette di compilare in automatico spazi vuoti di un "foglio doc modello" (o template), utilizzando dati di un "foglio di calcolo" (questo è solo il caso più tipico). Gli spazi vuoti si chiamano "campi variabili". Il template può essere già esistente oppure può esserne creato uno personalizzato. Il modello è formato da "campi fissi" precompilati ("sempre gli stessi") e "campi variabili" ("sempre diversi") inizialmente vuoti, che saranno poi compilati automaticamente.
Un esempio di "stampa di unione" con output di stampa in formato pdf è del tipo:



Nell'esempio sono stati evidenziati alcuni "campi fissi" con rettangolo celeste (nella parentesi quadra dovrebbe essere formattato il simbolo €, che invece risulta assente)  e alcuni "campi variabili" con ovali verdi, vuoti nel template iniziale, che troviamo, nel pdf finale, compilati in automatico con i dati del foglio di calcolo.
Altri "campi fissi" sono "Data del sopralluogo", "Comune", "via". I "campi variabili" relativi sono la data, il nome del comune e il nome della via.

In molti hanno già scritto circa la "stampa di unione" e i suoi diversi utilizzi.

Nel ns. caso vediamo come utilizzare la "stampa di unione" per redigere preventivi di spesa con acquisizione dei dati direttamente sul territorio, mediante la compilazione di un form di Google on-site. 
Procedere in questo modo:

1. Creare un form di google con i campi da compilare.
(nota: lo spreadsheet supporta al max 23 colonne, quindi non compilare più di 22 campi).
La prima pagina del modulo on-line del form è del tipo:



2. Modifica la destinazione delle risposte del modulo in un foglio di calcolo chiamato ad es., nel ns. caso, "Database preventivi M.C.A. suolo pubblico": da barra degli strumenti del modulo → "risposte" → "cambia destinazione della riposta" → "nuovo foglio di calcolo" → rinomina "Database preventivi M.C.A. suolo pubblico ".


Foglio di calcolo con la destinazione delle risposte del modulo

 
3. Accedi al foglio "Database preventivi M.C.A. suolo pubblico" (il foglio di calcolo contiene campi colonna generati con il form). Aggiungere nuove colonne (sono "campi calcolati") al foglio di calcolo che conterranno "valori calcolati" (cioè risultati di operazioni algebriche) dei dati immessi con il form: il totale del preventivo di spesa sarà dato dalla somma dei valori dei campi calcolati.
Ad esempio:
"costo rimozione" è il "campo calcolato" che contiene il prodotto "quantità di materiale da smaltire" (dato immesso con il form) x 3,28 [€/kg] (prezzo unitario del mat. da smaltire).


Lo stesso Foglio di calcolo con la destinazione delle risposte del modulo e le nuove colonne di “campi calcolati” aggiunte.

 
4. Dal foglio di calcolo "Spreadsheet preventivi" accedere all'editor di script (barra delle funzioni → strumenti → editor di script). 
Da notare quindi che lo script va scritto nell'editor del foglio di calcolo (e non nell'editor del form).

5. Creare un foglio doc con il "modello (template) di preventivo". Il "modello di preventivo" è un file doc che contiene campi fissi e campi variabili. Questi ultimi devono essere scritti con il testo della colonna racchiuso tra %%.
Ad esempio:
Costo intervento di rimozione e smaltimento del materiale (campo fisso):  %quantità di materiale da smaltire% [Kg] x 3.28 [€/kg] (campo fisso)  =  %costo rimozione%  [€]


 
6. Tornare allo spreadsheet e accedere all'editor di script. Adesso si tratta di scrivere in sostanza due funzioni.
Una funzione che ha lo scopo di scrivere nel foglio di calcolo "valori calcolati" nelle celle dei "campi calcolati" [settaggio dei valori].
La seconda funzione crea, quando un form viene inviato, una copia del "modello di preventivo" inserendo i valori nei campi variabili compresi tra "%". La funzione crea anche una versione pdf della copia del "modello del preventivo" doc (infine una volta creato il pdf, la funzione elimina la copia doc del "modello del preventivo"). La funzione è stata scritta da Andrew Roberts: https://gist.github.com/andrewroberts/21bc8b1b3fc7d3b40e6b.

Una copia dello script da utilizzare si trova a questo link:
https://docs.google.com/spreadsheets/d/16AdHQ-lUexcofM_HylTR41ebZtKrD9r6sNbtgHXJyWs/export?format=doc

 
7. Aggiungere i triggers (grilletti) al progetto. Il trigger attiva la funzione quando si verifica un determinato evento come, nel nostro caso, l'invio del form. Dalla barra di funzione dell'editor di script accedere a risorse  trigger del progetto corrente aggiungi trigger.

8. Richiede l'autorizzazione alla pubblicazione dello script.

9. Salvare e chiudere.

A questo punto è possibile inviare il form e ottenere in automatico il preventivo pdf costruito sulla base dei dati immessi nel form.

Buon Lavoro
Daniele Paolinelli