Javascript, HTML, CSS e... !
0 commenti

Creazione di un campo password in modo dinamico

Proteggere un Google Form con una password in modo programmatico da Apps Script

Il tema della protezione dei Form Google suscita sempre molto interesse, tuttavia una funzionalità che soddisfi questa esigenza non è offerta (quantomeno ad oggi) dagli strumenti Google, pertanto una volta che il modulo è creato diventa immediatamente di accesso pubblico per impostazione predefinita, ovvero chiunque può accederci purché conosca il suo URL.
Con un account Google Apps l'accesso al file può essere limitato agli utenti del relativo dominio, ma con un account Google comune questo non è possibile.
In tal caso una soluzione può essere quella di creare un Google Form che ha come prima domanda la richiesta di una password per poter proseguire con il contenuto effettivo del modulo. Questo impedirà agli utenti di immettere dati in tale Form se non conoscono la chiave di accesso.

Graficamente quello che intendo è una situazione di questo tipo, Fig. 1:



google form protetto da password

Fig. 1 - Google Form protetto da password


Creando un Form in modo programmatico, come spiegato dettagliatamente nell'articolo 'I vantaggi di creare un Google Form da codice tramite Google Apps Script', possiamo ottenere il risultato di cui sopra utilizzando il seguente codice da lanciare tramite uno script autonomo:

function creaFormConPassword() {

  // Creazione di un Form vuoto
  var form = FormApp.create('Google Form protetto da password');
  formID = form.getId();
  
  // Creo la validazione con un'espressione regolare
  var regexValidation = FormApp.createTextValidation()
  .requireTextMatchesPattern('^www.appsscript.it$')
  .build();
  
  // Inserimento nel form di un campo di testo
  form.addTextItem()
  .setTitle('Inserisci la password per proseguire?')
  .setHelpText('Inserisci la password che ti è stata fornita per accedere al modulo.')
  .setValidation(regexValidation)
  .setRequired(true);
  
  form.addPageBreakItem().setTitle('Benvenuto nel modulo');
  
  // Inserimento nel form di un campo a scelta esclusiva
  form.addMultipleChoiceItem()
  .setTitle('Sei già iscritto al gruppo Facebook "Fatti di Apps Script"?')
  .setHelpText('Se non lo sei ancora il link è il seguente: https://www.facebook.com/groups/AppsScript/')
  .setChoiceValues(['Sì','No']);
  
  // Altre domande del form...
  
}

Come è possibile vedere dalla funzione, oltre la banale creazione del documento aggiungo come primo elemento un campo di testo preceduto dal codice necessario per creare una validazione dei dati tramite un'espressione regolare per verificare la corrispondenza di pattern con la stringa inserita come risposta alla domanda (la password, che nel caso specifico è: www.appsscript.it).
Il metodo utilizzato è:

var regexValidation = FormApp.createTextValidation().requireTextMatchesPattern('pattern_della_password').build();

A questo punto, tale validazione viene associata al campo di testo per la richiesta della password tramite il metodo .setValidation(regexValidation), la risposta viene poi resa obbligatoria con .setRequired(true).

A seguire viene fatto uso del metodo .addPageBreakItem() per fare in modo che il resto delle domande dopo tale comando si trovi in una seconda pagina. In questo modo è possibile lasciare visibile all'utente, accedendo all'URL del Google Form, solo la richiesta della password e non il contenuto dei campi successivi (accessibili solo dopo aver inserito la password corretta).

La parte di codice è a mio avviso il lato più interessante dell'articolo, dato l'argomento monotematico del blog, tuttavia non è necessario passare da Google Apps Script per ottenere il risultato desiderato ma è possibile farlo direttamente dall'interfaccia di Google Form tramite il suo l'editor WYSIWYG, tant'è che nella sezione di edit è facile vedere la proiezione visuale di ciò che il codice di cui sopra ha creato (e che può essere replicato manualmente), Fig. 2:



impostazioni google form per la creazione di un campo password

Fig. 2 -Impostazioni Google Form per la creazione di un campo password


Il rovescio della medaglia è che tale soluzione alternativa, alla mancanza di una vera e propria protezione del documento da un accesso pubblico, non è a prova di bomba... buona parte dell'utenza può essere senz'altro fermata ma un utilizzatore un po' più scaltro con un minimo di conoscenze HTML può trovare in breve tempo la password cercandola nel codice sorgente della pagina, Fig. 3:



password richiesta dalla domanda presente in chiaro nel sorgente della pagina

Fig. 3 - La password richiesta dalla domanda è presente in chiaro nel sorgente della pagina


Questa precisazione è doverosa perché se il vostro Form è realmente confidenziale forse non è il caso di utilizzare questo metodo... e forse non è neanche il caso di utilizzare Google Form.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]http://www.appsscript.it[/url] se devi riferirti ad un indirizzo web