Nascondere il codice agli occhi degli utenti
Come proteggere il codice Apps Script in un Foglio di lavoro Google
A differenza dei file Excel, dove il codice in VBA può essere protetto per mezzo di funzionalità previste dallo strumento, in uno Spreadsheet (Foglio di Google) non esistono sistemi integrati che, con la stessa facilità, permettono la protezione del codice Apps Script dagli occhi degli utilizzatori del documento.
Non sono pochi pertanto quelli che si domandano come poter ovviare a questo, definiamolo pure, inconveniente.
Esistono ad ogni modo delle soluzioni nonché workaround per poter ottenere quanto desiderato.
Come prima soluzione da proporre c'è quella di pubblicare lo script come add-on, ovvero come componente aggiuntivo. Durante la fase di pubblicazione è possibile selezionare il tipo di visibilità per l'add-on ovvero, pubblica o privata.
Nel caso di visibilità privata, il componente aggiuntivo, sarà escluso dall'elenco delle add-on nel G Suite Marketplace. Inoltre, a differenza del caso della visibilità pubblica, i tempi di pubblicazione sono relativamente veloci (dai 5 ai 20 minuti) in quanto, in questo caso, non vengono sottoposti al processo di approvazione da parte di Google. È inoltre facile condividere i componenti aggiuntivi con utenti specifici: direttamente dalla dashboard del Chrome Web Store è possibile recuperare l'URL dell'add-on ed attribuirlo ad altre persone o a un gruppo.
Da precisare che, nonostante gli utenti che possono accedere all'add-on sono in grado di ottenere l'URL del progetto Apps Script tramite il file crx di tale add-on (ci sono diverse estensioni per il browser che lo consentono), non potranno accedere al codice del file in quanto quest'ultimo non è condiviso.
Di contro c'è da dire che le add-on hanno delle limitazioni che possono non essere in linea con la logica dell'applicazione che si sta sviluppando. Una di esse è legata al trigger installabile basato sul tempo che, come indicato nella documentazione ufficiale, può essere usato al massimo una volta ogni ora.
Nel caso in cui la pubblicazione come componente aggiuntivo non è un'opzione percorribile, una delle alternative è quella di utilizzare un'applicazione web, utilizzando le Apps Script API o le Google Sheets API.
Il concetto che sta alla base di questo approccio è che, quando gli utenti eseguono una funzione in uno Spreadsheet, la funzione recupera i risultati dalla Web App e li mostra all'intenro del Foglio di calcolo Google. In questo caso, lo Spreadsheet utilizzato dagli utenti ed il progetto distribuito come Web App sono separati, di conseguenza gli utenti non possono vedere lo script dell'applicazione web.
Un altro approccio può essere quello di creare un file e pubblicarlo come Libreria. Tale file conterrà le funzioni dedicate allo Spreadsheet desiderato e sarà distribuito con una versione. Considerando che anche l'utente utilizzatore dovrà avere accesso alla libreria, quantomeno a livello di lettura, sarà in grado di vedere il codice al suo intenro. In questo caso l'idea è quella di rimuovere il contenuto dello script dal e sostituirlo con uno fittizio, dopodiché salvarlo come una nuova versione.
L'utente in questo caso, poiché l'applicazione sta ancora lavorando sulla vecchia versione della libreria, vedrà solo il nuovo codice mentre lo script originale farà il suo lavoro come è stato previsto.
Esistono poi strumenti, disponibili anche online, che minimizzano il codice e/o lo offuscano rendendo le variabili ed il flusso dell'applicazione difficile da interpretare da parte di utente, ma in tal caso, a differenza dei precedenti, il codice che fa girare l'applicazione può essere copiato.
Molto interessante! Potreste indicarmi se esiste una guida (in questo sito o altrove) un po' più dettagliata sulla procedura oltre a quella ufficiale di Google?
Ciao Marco,
di quale procedura parli di preciso? Quanto contenuto in questo articolo non deriva dalla documentazione ufficiale di Google.
Ciao Michele,
purtroppo ora che la pubblicazione degli addons è stata ristretta al solo G Suite Marketplace non si può più pubblicare l'addon come "privato" per i soli "testers" come era possibile pubblicando via Chrome Web Store.
Sei a conoscenza di un modo per per pubblicare l'addon come privato (quindi senza passare dalla validazione di google) a utenti che non appartengano alla stessa organizzazione? (replicando gli utenti test della pubblicazione via Chrome Web Store?).
L'idea che mi è venuta sarebbe quella di pubblicare l'addon attraverso l'account dei testers e "linkare" il progetto al mio script in modo che possano usare l'addon senza vedere il codice. Ho però dei forti dubbi sulla sua fattibilità. Tu cosa ne pensi?
Ciao Gianni,
proprio in questi giorni ho avviato un processo di pubblicazione per un componente aggiuntivo per Google Sheet e ti confermo che come 'tipo di utente' viene data la possibilità di pubblicare solo come Esterno, a meno che non si appartenga ad un'organizzazione.
Riguardo alla tua idea non saprei sinceramente quale possa essere l'esito, sulla carta può funzionare ma l'unico modo per togliersi il dubbio in questo caso è fare un tentativo e capire se il collegamento che intendi funziona per la tua finalità.