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 Rafael Nuñez-Lagos mayo 21, 2018 - 4:31 pm
@Fernanda – Puedes usar el complemento para Formularios Timify.me, estableces un tiempo y si se supera pasa a la siguiente sección o envía el formulario.
Por Rafael Nuñez-Lagos mayo 21, 2018 - 4:17 pm
@Nuria – Esa opción no está disponible pero busca en los complementos de los formularios a ver si alguien ha hecho algo; con programación casi seguro que se puede, necesitas saber de javascript.
Por Fernanda mayo 20, 2018 - 6:32 pm
Buenas. Mi pregunta es la misma que la de Diana. Quiero poner límite de tiempo para el examen, pero no en una fecha u hora concreta, si no desde que el alumno abre el examen. Sería un «cronómetro» para el examen. ¿Es posible?
Gracias.
Por Nuria mayo 18, 2018 - 1:21 pm
Hola, es posible Hacer una Script para según vayan respondiendo te vaya haciendo sumas y te dé el resultado antes de enviar el formulario
Por Rafael Nuñez-Lagos abril 23, 2018 - 5:03 pm
@Diana – Si sigues el tutorial de esta página lo puedes hacer, ¿te da algún problema?
Por diana cruz abril 22, 2018 - 8:12 pm
hola buenas tardes me gustaria saber si se puede limitar el tiempo en el formulario por ejemplo que el que este contestando solo tenga una hora para resolverlo y enviarlo para ponerles un limite de tiempo gracias
Por Teresa diciembre 19, 2017 - 9:16 am
Genial! Muchas gracias!
Por Rafael Nuñez-Lagos octubre 5, 2017 - 10:35 am
@Aldo – Lo acabo de probar y funciona perfectamente, sigue los pasos del tutorial y verás cómo no da ningún fallo.
Por aldo zeas septiembre 30, 2017 - 4:50 am
saludes desde Nicaragua.
me dice que me falta comillas detras de la condición en la linea 13.
Por Rafael Nuñez-Lagos julio 12, 2017 - 6:42 pm
@Jimy – Mira a ver si hay algún componente que te valga, sino lo tendrías que programar tu con un script.
Por Jimy julio 9, 2017 - 6:17 am
Buenas noches somo puedo establecer un tiempo determinado (por ejemplo: 20 minutos) desde que el alumno abra el formulario.
Por Rafael Nuñez-Lagos mayo 25, 2017 - 12:10 pm
@Joaquim – Si por equivocación mandas la URL del formulario para editar a alguien que no tiene permisos, el sistema te pide solicitar acceso de edición, revisa los permisos de los colaboradores.
Por Joaquim Nogue Gallardo mayo 24, 2017 - 8:17 am
Hola, normalmente he usado los formularios sin problemas. Ayer observé que un formulario que envié, era editable para la persona que lo recibía. Esto no me había pasado nunca. He comprobado los permisos de edición y no me deja enviar el formulario únicamente para contestarlo.
No sé si me he explicado. Muchas gracias
Por Rafael Nuñez-Lagos mayo 22, 2017 - 5:00 pm
@Daniela – Directamente no puedes.
Por Daniela Albornoz mayo 10, 2017 - 12:53 pm
Hola, se puede poner temporizador por cada pregunta? Es decir, que cada pregunta tenga un tiempo específico para responderse.. Gracias!
Por Salomón abril 12, 2017 - 12:41 am
Saludos, estoy buscando como poner un tiempo límite a cada pregunta, espero me puedas ayudar.
Por Armando Salas enero 21, 2017 - 8:23 pm
Excelente aportación, gracias mil por contribuir con estos tutoriales de ayuda, una abrazo mi estimado Rafael.
Por Rafael Nuñez-Lagos septiembre 16, 2016 - 6:52 pm
@Sergio – Lo tienes en el desplegable de los tres puntos verticales, el tutorial está hecho con la última versión de los formularios. Cerciórate que tienes el navegador actualizado.
Por Sergio septiembre 15, 2016 - 2:07 pm
Hola, ¿puede ser que en la nueva versión (2016) ya no este Editor de secuencia de comando? y por lo tanto no se pueda establecer fechas limites?¿O hay otra forma? Muchas gracias!
Por Jake Barbosa mayo 24, 2016 - 5:38 pm
Buenas tardes, muchas gracias por tu aporte me sirve de mucho, pero si quisiera que se abriera y se cerrara todos los dias algo asi;
Open: 17:00
Close: 09:30
gracias