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.
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.
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
Artículos relacionados.
– Creación de formularios con Google Drive. Nueva Versión.
Por FRED QUINTERO septiembre 14, 2023 - 10:50 pm
Hola, gracias por subir esto… es super útil.
Queria consultarte si hay posibilidad de que la configuración del forms sea ej:
apertura martes 15hs y el cierre viernes 15hs
Pero que quede para todas las semanas.
No solo para 1 semana
Gracias
Por patricia agosto 18, 2023 - 5:40 pm
Excelente solucion. Copie tal y como indica pero al ejecutar me aparece:11:38:43 Aviso Se ha iniciado la ejecución
11:38:43 Error
Script function not found: Initialize
Por Antonio septiembre 27, 2022 - 4:34 pm
Hola,
Gracias por el post. Es muy útil.
Quisiera saber si es posible poner varias fechas al mes para poder inscribirse en un taller de conversación. Este taller tiene lugar dos veces al mes.
Por M Angeles julio 12, 2022 - 1:28 pm
Como puedo poner que solo se conteste de una fecha a otro por ejemplo de los días 10 al 20 de cada mes
Por Ruben octubre 12, 2021 - 7:10 pm
Hola
Existe la posibilidad de modificarlo para que el formulario acepte los registros solo de lunes a viernes en un horario de 9:00 a 18:00
Gracias
Por David agosto 27, 2021 - 2:14 pm
Gracias;
Deseo mostrar al inicio la fecha de inicio y final, te lo agradecería
Gracias nuevamente.
David
davidcerronleon@gmail.com
Por JOSE agosto 24, 2021 - 1:38 am
Hola buenas tardes mi pregunta es si puedo poner un temporizador visible
Por ana prein junio 27, 2021 - 11:14 pm
Hola, gracias por subir esto… es super útil.
Queria consultarte si hay posibilidad de que la configuración del forms sea ej:
apertura martes 15hs y el cierre viernes 15hs
Pero que quede para todas las semanas.
No solo para 1 semana
Gracias
Por Hernan mayo 25, 2021 - 5:44 am
HOLA, al copiar el scrip tal cual me figura en el tutorial solo me cierra el form, no abre para recibir respuestas, alguna solucion a esto??
Por Laura mayo 15, 2021 - 3:44 pm
Hola, quisiera saber si a través de app script puedo saber quien abre mi formulario aunque la persona no haya enviado finalmente el form? necesito saber si mis estudiantes están haciendo clic en los enlaces en los momentos en que solo algunos tienen permitido acceder. Hay pocas herramientas que me permiten supervisar examenes, me gustaria saber si con scrips puedo encontrar soluciones para esto.
Por Carlos abril 27, 2021 - 2:07 pm
Muchas Gracias!
Por Christian Díaz abril 9, 2021 - 4:05 pm
Realmente agradezco esta solución, me ha resultado impecable sin ningún error.
Esto es hacer comunidad, ayudar a los otros.
Muchas gracias,
Por Marilyn marzo 27, 2021 - 6:22 pm
¡Muchas gracias!
Por Monica mr febrero 18, 2021 - 12:31 am
Una vez que se establecieron los tiempos para usar el formulario como examen, se pueden modificar, Moo para dar más tiempo a los alumnos???