JavaScript, HTML, CSS e... !
8 commenti

Pillola di Apps Script #0012

Limitare il numero di risposte nei Google Forms in Automatico

Pillola di Apps Script #0012

Nome: Limita il numero di risposte nei Google Forms in Automatico

Descrizione: Con pochissime righe di codice e un trigger all'invio del modulo è possibile limitare in modo automatico il numero di risposte che un Google Form può accettare. Nell'esempio ho limitato a 25 tale numero, qualora un utente provasse ad inserire una nuova risposta vedrà comparire un messaggio a video con scritto "Il modulo 'Nome Modulo' non accetta più risposte".

Stato di verifica: VERIFICATO

Ambito di utilizzo: Google Forms

Segnalatore: la pillola deriva da un post di Aya Sayed, ho aggiunto la parte del trigger in modo da renderlo totalmente dinamico

Codice:

function Limit() {
  var f = FormApp.getActiveForm();
  var r = f.getResponses();
  if(r.length > 25) {
    f.setAcceptingResponses(false);
  }
}

Aggiungere un trigger installabile che attiva la funzione Limit All'invio del modulo (in realtà è sufficiente eseguire la funzione una sola volta tuttavia in questo modo garantiamo che lo faccia ad ogni invio senza doversi ricordare se tale operazione sia stata effettuata manualmente in precedenza o meno).

 

Se vuoi scrivere anche tu la tua Pillola di Apps Script su appsscript.it segui le indicazioni contenute nell'articolo "Pillole di Apps Script: la sezione dedicata a piccole funzioni, trucchi e suggerimenti".

Il tuo contributo è fondamentale, quello che per qualcuno può sembrare una banalità per qualcun altro è un grande aiuto!

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

8 Commenti

  1. Saturday, November 7, 2020 alle ore 19:19 Luca

    Buonasera, a me non funziona in automatico, ovvero quanfo il modulo è stato compilato n volte, per non far accettare più le risposte dalla n + 1 è necessario andare nello script ed avviarne l'esecuzione. In questo modo non è utile in quanto basterebbe vedere se il numero di risposte e bloccarne la ricezione. Sto sbagliando qualcosa? Grazie, cordiali saluti

    Rispondi a questo commento
    • Saturday, November 7, 2020 alle ore 21:22 Michele PisaniAutore

      Ciao Luca,
      lo script deve essere eseguito almeno una volta, ad ogni modo ti assicuri del corretto funzionamento aggiungendo un trigger installabile che attiva la funzione Limit all'invio del modulo, come descritto nell'articolo.
      Lo script replica la stessa funzionalità che da interfaccia potresti gestire manualmente, in questo caso però lo fa in modo automatico senza aver bisogno di controllare fisicamente di volta in volta se il numero di risposte è stato raggiunto.

      Rispondi a questo commento
  2. Sunday, February 7, 2021 alle ore 23:24 Renato Conotter

    Buongiorno mi piacerebbe applicare una cosa come questa alla somma di un campo. Devo registrare il limite massimo di accessi ad un evento con questo modo devo fare un form per persona ma se uno viene con 3 famigliari deve fare 3 form mi piacerebbe fare che uno scriva 3 persone in un campo o 1 e che la somma di questa risposta raggiunto 25 blocchi il modulo

    Rispondi a questo commento
    • Sunday, February 7, 2021 alle ore 23:55 Michele PisaniAutore

      Ciao Renato,
      i Google Forms sono uno strumento molto blindato. Lo script descritto nell'articolo facilita la chiusura del modulo replicando la stessa funzionalità che da interfaccia potresti gestire manualmente.
      Con questo tipo di strumento infatti, se non è previsto poter configurare l'impostazione desiderata con le sue funzionalità native, non è possibile ottenerla neanche lato codice. Il consiglio che do sempre in questi casi è quello di crearsi un form personalizzato in HTML, sempre con Google Apps Script. Perderai la semplicità d'uso dei Google Forms ed è richiesto senz'altro un po' di sviluppo, tuttavia puoi crearti tutte le funzionalità che desideri.

      Rispondi a questo commento
  3. Friday, February 26, 2021 alle ore 15:23 Maurizio Quinto

    Buongiorno, vorrei creare un modulo che permettesse di limitare il numero degli iscritti in base anche alla data. Nello specifico, il mio problema è quello di permettere agli utenti di potersi iscrivere ad una data, e che il sistema controlli per data il numero degli iscritti, limitandoli.
    Grazie

    Rispondi a questo commento
    • Friday, February 26, 2021 alle ore 20:04 Michele PisaniAutore

      Ciao Maurizio,
      sinceramente non l'ho testato ma potrebbe funzionare. Una prova che sicuramente farei è quella di utilizzare la funzione del codice presente in questo articolo e adattarla con variabili dinamiche in modo che tu possa aprire e chiudere il form al raggiungimento di una certa soglia di risposte in un giorno e sbloccarla con un controllo il giorno successivo aumentando il valore delle risposte accettate, e così via. Serviranno alcuni controlli e giocare con il valore false/true di setAcceptingResponses ma sulla carta sembra fattibile.
      Spero di averti dato un valido spunto :)

      Rispondi a questo commento
  4. Wednesday, October 13, 2021 alle ore 20:34 Andrea

    Ma è possibile creare uno script che consenta di limitare il numero di risposte per utente a un numero diverso da 1? E magari di raccogliere quante volte un utente ha votato?

    Rispondi a questo commento
    • Monday, October 18, 2021 alle ore 23:39 Michele Pisani

      Ciao Andrea,
      che io sappia non è possibile gestire in modo personalizzato il limite al numero di risposte per utente se non con il metodo setLimitOneResponsePerUser per limitare ad una risposta.
      Puoi eventualmente gestire in modo automatico lo Spreadsheet associato, creando una funzione che verifica se la email inserita nel form è già presente (una o quante volte definito come numero massimo) e, se la condizione è soddisfatta, rimuovere dal Foglio la riga appena inserita. Questo tuttavia non ha impatto sulle risposte che vedi in back end del Google Form poiché quelle rimarranno intatte. Lo Spreadsheet invece potrà essere utilizzato come base per leggere i dati 'puliti'.

      Rispondi a questo 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]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web