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 Ileana mayo 26, 2020 - 4:44 pm
Buenas tardes: Estoy intentado restringir la hora de uso de un formulario, he seguido los pasos que aparecen aquí, pero no veo ningún resultado, sigo accediendo al formulario a pesar de que en teoría estaría cerrado, ¿alguien podría ayudarme?
Por Rafael Nuñez-Lagos mayo 21, 2020 - 10:44 am
@María – Te digo lo mismo, si no te sale y no te quieres complicar instala el complemento de formularios Formlimiter que hace lo mismo, no te puedo decir que tal funciona porque no lo he probado.
Por Rafael Nuñez-Lagos mayo 21, 2020 - 10:42 am
@Gonzalo – Si no te sale puede ser porque no hayas hecho bien algún paso, la alternativa es que instales el complemento de formularios Formlimiter que hace lo mismo, no te puedo decir que tal funciona porque yo no lo he probado.
Por Maria mayo 21, 2020 - 3:59 am
Buenas noches, hice todo lo que explica, pero tengo las siguientes dudas:
1. Una vez que le doy clic en guardar al código se ejecuta automáticamente o tengo que entrar al editor de secuencia de comandos para que se pueda ejecutar.
2. Al intentar ejecutar seleccione la funcion initialize me funciono para el cierre del formulario pero no cuando lo quiero abrir, no abre el formulario
Por Gonzalo Aragón mayo 20, 2020 - 10:37 pm
Pego el script completo y cambio las fechas pero no me da la opcion de inicializar el script, ¿qué puedo hacer?
Por María Laura mayo 18, 2020 - 1:12 pm
Hola, algo estoy haciendo mal, he leído las preguntas y respuestas, pero sigo haciendo algo mal. Armo el formulario, abro editor de secuencias, pego todo el recuadro de la página, cmabio fecha y hora de inicio y cierre, dejo en blanco la cantidad de respuestas, doy guardar, initialize, los permisos y cuando voy a hacer la prueba… me aparece el mensaje de que ya no se aceptan respuestas, aún no habiendo empezado el tiempo de iniciar… Me he olvidado de algún paso?. Desde ya muchas gracias por la respuesta. Saludos
Por Javier Sanmartin mayo 17, 2020 - 8:23 pm
Buenas tardes, muy interesante el aporte, gracias. Sin embargo, en mi caso no me ha funcionado. Por un lado, si se definen fecha y hora de inicio y fin, al tratar de acceder antes del inicio, elformulario se pone en «No se aceptan más respuestas», por lo uqe hay que, en forma manual, retirar esa seguridad del formulario, lo que invalida la fecha y hora de inicio. Alguna sugerencia? Gracias por adelantado.
Por Javier mayo 17, 2020 - 7:26 am
Saludos. Gracias por el aporte, me parece bastante útil. Solamente una inquietud, estoy haciendo algo mal, dado que el formulario se abre incluso antes de la fecha de apertura.
Podria ayudarme?
Saludos cordiales,
Javier
Por Rafael Nuñez-Lagos mayo 15, 2020 - 4:38 pm
@Esteban – Prueba con otro navegador.
Por Julio César Hernandez Intriago mayo 11, 2020 - 11:18 pm
Entonces si quisiera adaptar este código para que el formulario se abra y se cierre a diario entre las 12:10 y las 12:30, solo debo quitar la fecha y dejar la hora en las primeras 2 líneas de código.
Por Esteban Salazar mayo 11, 2020 - 6:48 pm
no me da acceso al editor de comandos, ¿por que sucede esto?
Por Rafael Nuñez-Lagos mayo 10, 2020 - 12:16 pm
@Marco – Mira en los complementos de los formularios, si no sabes lo que son, mira en esta página.
Por Rafael mayo 10, 2020 - 12:02 am
Gracias, Gracias sigue siendo funcional y util
Por Marco mayo 7, 2020 - 3:10 pm
Buen dia y gracias por la informacion.
habria una manera para enviarlo automaticamente cada ciertos dias?
Por Rafael Nuñez-Lagos abril 29, 2020 - 11:47 am
@Jose – Formato 24 horas.
Por Jose abril 28, 2020 - 12:19 am
Saludos la hora en que formato esta
12 horas o 24 horas
y gracias por el apoyo
Por Rafael Nuñez-Lagos abril 24, 2020 - 12:10 pm
@Anibal – Lo que te dice es que no se hace responsable de ese script y que puede poner en riesgo tus datos, es un mensaje genérico, le puedes dar a aceptar.
Por anibal herrera abril 23, 2020 - 11:43 pm
Hola, me tengo problemas con la seguridad de mi cuenta de gmail, no me daja inicializarlo.
¿como puedo cambiar eso?
Por JOAQUIN GARCIA ANDRES abril 20, 2020 - 10:15 am
Muchas gracias por tu aportación. Me ha resultado muy útil.
Por Rafael Nuñez-Lagos abril 19, 2020 - 7:53 pm
@Paqui – Tendrías que añadirlo en el script, en realidad lo que quieres saber es cuanto tiempo ha tardado el usuario en hacerlo, si te he entendido bien.