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 Laura febrero 16, 2021 - 9:54 pm
Quisiera saber si es posible habilitar un formulario unicamente por un rango de horas… es decir como una asistencias todos los días de 00.00 am a las 7.00 am
Por carlota febrero 14, 2021 - 12:23 pm
Realicé un examen importante a través de estos formularios. En la última página no vi un botón de enviar y se me cerró el formulario sin poder enviarlo a tiempo. ¿Se quedan registradas las respuestas que pude contestar hasta ese momento? ¿Cómo tendría que haberlo enviado?
Gracias
Por Eduardo Canelo enero 18, 2021 - 8:25 pm
Se puede usar ese código pero para limitarlo todos los dias solamente por horario?
Por Ramón diciembre 10, 2020 - 5:55 pm
Funciona increíble muchas gracias. La MAGIA esta para quienes usamos los formularios fuera de classroom. Saludos
Por Rafael Nuñez-Lagos diciembre 5, 2020 - 1:03 pm
@Walter – Si no te funciona puedes instalar el complemento de formularios Formlimiter, tienes el enlace al final del tutorial.
Por walter diciembre 4, 2020 - 10:47 pm
Hola Rafael, resulta que he copiado y pegado todo el scrip en mi formulario (lina de comandos) y no pasa nada, ya cambie las fechas de apertura y cierre y no pasa nada.
Por Rafael Nuñez-Lagos octubre 28, 2020 - 11:27 am
@Mar – Tienes que añadir el script a los formularios que quieras limitar.
Por Mar H Islas octubre 17, 2020 - 12:28 pm
Hola. Gracias mil por la aportación. Quisiera saber si ese código funciona siempre para todos los formularios?
Por Rafael Nuñez-Lagos septiembre 22, 2020 - 10:17 am
@Lisbeth – Para personalizar los formularios a ese nivel tendrías que hacerte tu el script, necesitas conocimientos básicos de javascript. No creo que haya ningún complemento que se ajuste a lo que necesitas.
Por Rafael Nuñez-Lagos septiembre 21, 2020 - 11:43 am
@Hugo – Con este script no se puede hacer, tendrías que hacer uno nuevo desde el editor de secuencia de comandos. También puedes mirar entre los complementos para formularios por si hubiera algo ya hecho.
Por Lisbeht Castilla septiembre 21, 2020 - 6:27 am
Buenos días, mi consulta es, que necesito que el formulario se envíe una sola vez al grupo de wassap de mi compañía, para ser llenado por los colaboradores diariamente sin necesidad de estar enviándolo diariamente, que si lo restringa cuando quiero llenar 2 veces a mas al día; pero no diariamente.
Por Hugo septiembre 18, 2020 - 11:11 pm
Necesito limitar el numero de respuestas a una pregunta y no el numero de registros del formulario.
Ejemplo:
horarios citas
6:00
7:00
8:00
la idea es que cuando el horario de las 6 se cope por decir con 5 citas, salga un mensaje que diga «horario no disponible, debes elegir otro»
Por Francisco septiembre 18, 2020 - 12:53 pm
Buenos dias , amigos no me funciona :
Por herman tapias arias septiembre 4, 2020 - 4:37 am
realizar formulario de asistencia
Por Jose Maria agosto 23, 2020 - 7:16 am
Hola buen dia, se podra crear un script para que unicamente muestre la fecha (Año, Dia,Mes.hora,minuto y segundo) en la que se esta usando el formulario? La finalidad es que el usuario pueda saber la fecha en la que respondiendo.
Por Rafael Nuñez-Lagos junio 28, 2020 - 12:56 pm
@Webm@ster – Los formularios se pueden cerrar de forma manual, con el script o el complemento lo puedes automatizar.
Por Webm@ster junio 27, 2020 - 6:19 pm
Hola. No veo la función de envío de formulario para cuando termine el tiempo. Porque las mismas funciones de este script, se pueden realizar con las opciones de classroom. ¿Dónde está la magia?
Por Guillermina Pettinari junio 12, 2020 - 2:33 pm
Buenos dias, se puede crear un script que caduque luego de por ejemplo 40 minutos??
Por marcos junio 9, 2020 - 8:53 am
Hola buenas una pregunta :-)
En el Scrip se puede colocar solo dia y año? es decir quiero de todos los dias 1 de cada mes se puedan enviar respuestas hasta el dia 5 de cada mes de resto desde el dia 5 en adelante siempre estara cerrado
Por Julian Martinez mayo 29, 2020 - 4:17 pm
Hola Rafale muchas gracias por ese aporte tan importante. Quería saber si se puede elaborar un script que restrinja los datos repetidos por ej de correo electronico. Quedo atento