Establece fechas límite a los Formularios de Google

Configura el inicio y cierre del formulario por fechas o limita el número de respuestas admitidas

 

Los formularios de Google están siempre abiertos por defecto, cualquier usuario puede contestarlos a no ser que los cerremos nosotros de forma manual para no recibir más respuestas.

Por la razón que sea, nos puede interesar que el formulario tenga fechas de apertura y cierre, esto puede ser útil, por ejemplo, para profesores que quieran hacer un examen con fechas límite o bien para establecer en una web un concurso para las primeras 20 respuestas a unas preguntas.

acceso-scripts-google-form

Establecer las fechas a nuestro formulario de Google

Con la ayuda de las Secuencias de Comandos podemos establecer de forma automática las fechas y horarios de apertura y cierre. Con este script también podemos establecer el límite de las respuestas de cualquier formulario.

Estos son los pasos que hay que seguir:

① Abrir un formulario en Google Drive o crear uno nuevo.

② Ir a la sección Más de nuestro formulario; son los tres puntitos verticales de la parte superior derecha de la página.

③ Una vez que se nos abre el Editor de la Secuencia de Comandos, hay que borrar las líneas de código que hay y pegar el script que pongo al final del artículo.

④ Sólo hay que configurar las tres primeras líneas, las dos primeras se refieren a la fecha de inicio y cierre, están en formato inglés YYYY-MM-DD HH:MM, tener esto en cuenta. Si no se quieren poner fechas, se puede dejar en blanco.

⑤ La tercera línea es para establecer el límite de las respuestas, se puede dejar en blanco para que no tenga límites.

⑥ Una vez hecho esto hay que guardar el formulario, Ctrl S o con el icono correspondiente del Editor de Comandos e inicializar el script, para hacerlo seleccionamos la función del desplegable y luego hacemos clic en el icono de play.

Inicializar el script

Una vez hecho Google preguntará si le damos permisos para que se ejecute el script, hay que seleccionar nuestra cuenta y aceptar.

El script corre en segundo plano, recibiremos un correo cada vez que se abra o cierre el formulario.


FORM_OPEN_DATE   =  "2018-03-31 12:10"; /* Establece la hora en que se abre el formulario */
FORM_CLOSE_DATE  =  "2018-03-31 12:30"; /* Establece la hora en que se cierra el formulario */
RESPONSE_COUNT   =  "100"; /* Establece el número de respuestas que admite el formulario */
 
/* Web tutorial: http://labnol.org/?p=20707  */
 
/* Initialize the form, setup time based triggers */
function Initialize() {
  
  deleteTriggers_();
  
  if ((FORM_OPEN_DATE !== "") && 
      ((new Date()).getTime() < parseDate_(FORM_OPEN_DATE).getTime())) { 
    closeForm();
    ScriptApp.newTrigger("openForm")
    .timeBased()
    .at(parseDate_(FORM_OPEN_DATE))
    .create();
  }
  
  if (FORM_CLOSE_DATE !== "") { 
    ScriptApp.newTrigger("closeForm")
    .timeBased()
    .at(parseDate_(FORM_CLOSE_DATE))
    .create(); 
  }
  
  if (RESPONSE_COUNT !== "") { 
    ScriptApp.newTrigger("checkLimit")
    .forForm(FormApp.getActiveForm())
    .onFormSubmit()
    .create();
  }
  
}
 
/* Delete all existing Script Triggers */
function deleteTriggers_() {  
  var triggers = ScriptApp.getProjectTriggers();  
  for (var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}
 
/* Send a mail to the form owner when the form status changes */
function informUser_(subject) {
  var formURL = FormApp.getActiveForm().getPublishedUrl();
  MailApp.sendEmail(Session.getActiveUser().getEmail(), subject, formURL);  
}
 
/* Allow Google Form to Accept Responses */
function openForm() {
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(true);
  informUser_("Your Google Form is now accepting responses");
}
 
/* Close the Google Form, Stop Accepting Reponses */
function closeForm() {  
  var form = FormApp.getActiveForm();
  form.setAcceptingResponses(false);
  deleteTriggers_();
  informUser_("Your Google Form is no longer accepting responses");
}
 
/* If Total # of Form Responses >= Limit, Close Form */
function checkLimit() {
  if (FormApp.getActiveForm().getResponses().length >= RESPONSE_COUNT ) {
    closeForm();
  }  
}
 
/* Parse the Date for creating Time-Based Triggers */
function parseDate_(d) {
  return new Date(d.substr(0,4), d.substr(5,2)-1, 
                  d.substr(8,2), d.substr(11,2), d.substr(14,2));
}
 
/* Written by Amit Agarwal amit@labnol.org */

* No os asustéis con el código, sólo hay que copiar/pegar todo y modificar luego las tres primeras líneas para que se ajuste a nuestras necesidades.

Si no os sale o tenéis dudas ponerlas en los comentarios y trataré de contestarlas.

Fuente: Labnol.org. Sitio muy recomendable.

Si no os sale o no queréis complicaros con el script podéis instalar el complemento de formularios Formlimiter

 

Sobre Rafael Nuñez-Lagos

Me encanta enseñar. Mira mi perfil de Google +
This entry was posted in Formularios, Google and tagged , . Bookmark the permalink.

135 respuestas a "Establece fechas límite a los Formularios de Google"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*


 

0 Compartir
Twittear
Compartir
Compartir