![]() |
Origen |
Las Google Apps Scripts, o secuencias de comandos, son pequeñas programaciones de comandos JavaScript que facilita la automatización de algunas tareas en las aplicaciones de Google.
A partir de leer el post de mi amigo Antonio Garrido , asesor TIC del CPR de Alcazár de San Juan en Ciudad Real :
Cuestionario autocalificables con Google Docs y Flubaroo
en el que explica cómo hacer mediante una secuencia de comandos llamada Flubaroo, cuestionarios autoevaluables con Google Docs, me he puesto a trastear un poco con ellas y he encontrado dos utilidades más. En este post veremos cómo hacer un formulario de contacto que se envía completo a una dirección de email.
Formulario de Contacto
Sabemos que con Google Docs se pueden hacer formularios con mucha facilidad y que los datos enviados a través de ellos quedan recogidos en un hoja de cálculo. En esta hoja de cálculo se pueden configurar las notificaciones para que, cuando alguien rellena el formulario, te envíe un aviso por correo electrónico. De esta manera, podemos entrar en la hoja y ver el nuevo registro.
Hay una forma de que, cuando alguien envíe el formulario, recibir en el correo electrónico las respuestas completas, sin necesidad de acudir a la hoja de cálculo para visualizar el registro generado. Esto puede servir para hacer formularios de contacto para páginas web, etc.
2. Definimos los campos que creamos necesarios. Uno de ellos será la dirección de email de la persona que envía dicho formulario (necesario para poder responder). En este ejemplo crearé tres preguntas: Nombre, email y mensaje :
3. Una vez creados los campos guardamos el formulario y volvemos a la hoja de cálculo asociada:
4.Una vez dentro de la hoja, elegimos dentro del menú "Insertar" : "Secuencia de comandos"
5. En la ventana que aparece con el nombre de Galería de Secuencia de Comandos, hacemos una búsqueda por el término Contact Us, y en el resultado que sale "Contact Us Form Emailer" clicamos en Instalar, tras lo cual puede que nos aparezca un mensaje de error al cual no debemos hacer ningún caso :
6. Ahora es el momento en el que tenemos que editar nuestra secuencia de comandos y activarla para que se ejecute cuando alguien envía un formulario.
Una vez hechos los cambio vamos al menú "Archivo" y Guardamos.
7. Ahora activaremos la secuencia. Para ello iremos al menú "Activadores" y ahí clicamos "Activadores de la secuencia de comandos actual"
5. En la ventana que aparece con el nombre de Galería de Secuencia de Comandos, hacemos una búsqueda por el término Contact Us, y en el resultado que sale "Contact Us Form Emailer" clicamos en Instalar, tras lo cual puede que nos aparezca un mensaje de error al cual no debemos hacer ningún caso :
6. Ahora es el momento en el que tenemos que editar nuestra secuencia de comandos y activarla para que se ejecute cuando alguien envía un formulario.
Entraremos en una nueva ventana de edición :
Tendremos que personalizar algunas líneas con nuestros propios datos :
function contactUsMailer(e) {
// This script e-mails the contents of a form to a given recipient
// The form must have three fields in the order of: name; e-mail address; and message
// You must change the recipient variable below to your e-mail address
try {
var recipient = "guerra.jc@gmail.com" ; ENTRE LAS COMILLAS PONEMOS LA DIRECCIÓN DONDE QUEREMOS RECIBIR EL FORMULARIO
var timestamp = e.values[0];
var name = e.values[1];
var email = e.values[2];
var message = e.values[3];
var body = name+' <'+email+'> Ha enviado el siguiente mensaje a través de la web: '+message;
var bodyHTML1 = '<p>'+name+' <a href="mailto:'+email+'">'+email+'</a> Ha enviado el siguiente mensaje a través de la web: </p>'; PERSONALIZAMOS LAS FRASES DEL CUERPO DEL MENSAJE
var bodyHTML2 = '<blockquote>'+message+'</blockquote>';
LA LÍNEA varbodyHTML3 LA PODEMOS BORRAR PORQUE ES PUBLICIDAD DE LA SECUENCIA QUE APARECERÍA AL FINAL DEL MENSAJE
var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2 , replyTo:email}; SI ELIMINAMOS LA LÍNEA ANTERIOR, EN ESTA TENEMOS QUE BORRAR +bodyHTML3 porque no estaría definida
MailApp.sendEmail(recipient, "Mensaje a través de la web", body, advancedArgs);
} catch(e){
MailApp.sendEmail(recipient, "Error - Contact Us Form", e.message);
}
}
Una vez hechos los cambio vamos al menú "Archivo" y Guardamos.
clicamos en Here to add one now
Cambiamos el tercer campo a "On form submit" . De esta forma recibiremos el formulario cuando alguien lo envía . Guardamos el activador.
Nos aparecerá el siguiente aviso y lo autorizaremos :
8. Ahora hacemos una prueba de envío de formulario :
Si hemos realizado las acciones anteriores correctamente, recibiremos un email en nuestro buzón :
Fantástico.
ResponderEliminarMuchas gracias.
Tengo un par de formularios de contacto que no leía porque no recibía notificaciones en mi correo.
Tenía que ir a mis documentos de Google y ver si había algo... Y, muchas veces, cuando llegaba a leer el mensaje, ya habían pasado varios días... He realizado lo que explicas y ha funcionado correctamente.
Saludos cordiales.
Gracias Angel. Me alegro mucho de que te haya servido.
ResponderEliminarUn abrazo.
hola!!
ResponderEliminarMi pregunta es como puedo seleccionar del formulario que acaba de llenar una persona su correo para que este sea a donde se dirige la información que lleno?
Gracias por el blog, muy bueno si tuviera publicidad te pagaría con clic tu trabajo. ¿Como mándale el resultado a la personas cuando termina inscribirse con formulario? visitare este blog para ver si puedo pagar de alguna manera esta información...
ResponderEliminaredublog: www.instruye.blogspot.com
Muy muy útil, mil gracias
ResponderEliminarCuando se trata de un correo GMAIL, funciona a la perfección; sin embargo, si queremos aplicar un correo BLOGGER.COM (para que el contenido del formulario llegue a la bandeja de entradas BLOGGER), no funciona.
ResponderEliminar¿Alguna sugerencia?
Hay metodos mejores que este, esta desfasado ya
ResponderEliminarMe pasarías un método nuevo? este no funciona. gracias
Eliminar¿Desfasado? ¿Alguna propuesta?
EliminarFunciona perfectamente. Yo lo sigo utilizando.
EliminarHola esta muy bueno el tuto, ahora no se si me puedas apoyar, en el form de google al enviar el formulario puedo reenviarlos automáticamente a una pagina personalizada en mi pagina web?
ResponderEliminarFantastico tio, lo mejor que he encontrado, y tanto que funciona :)
ResponderEliminarFunciona muy bien, excelente aporte, sabes la manera de editar las celdas? quiero agregar un consecutivo a cada registro y al lado otra celda con texto personalizado?
ResponderEliminarAgradezco si puedes ayudarme.
Muchas gracias, desearía saber si hay alguna forma para que la persona que rellene el cuestionario pueda adjuntar archivo/s porque la pregunta lo pide.
ResponderEliminarSaludos,
Hola. Todo funciona OK, excepto que en el email que llega a mi correo no recibo lo que se ingresó en el cuerpo del mensaje, es decir, recibo el nombre, el número de teléfono y el email solamente. Lo que escribió el que envió el mensaje no lo recibo. Qué estará fallando?
ResponderEliminarHola a todos, quiero hacer un form en google doc, pero que en la primer hoja cargue los datos el que lo llena y despues siga en las siguientes con los datos, el tema es que quiero que al terminar el form si quiere volver a cargar la ficha los datos de la primer hoja queden llenos para que no tenga que volver a ponerlos sino es un garron, alguien sabe como se puede hacer ??
ResponderEliminarLo maximo que vi es mandandoles mails a cada uno de los que llegan con un identificador, entonces podes saber quien los llena (mail) sin que carguen los datos pero le tenes que mandar mail a cada uno de los que llenen las fichas y lo queria hacer mas abierto.
Desde ya muchas gracias.
Muy Buena entrada. Muchisimas gracias por el aporte.
ResponderEliminarYo lo he hecho pero me llegan los envíos del formulario al documento excell del formulario en Drive.
ResponderEliminarYo puse mi correo a través de 1&1 y no me llega nada.
Alguna solución
Muy bueno. Me sirvio!!!
ResponderEliminarGenial el tutorial
ResponderEliminarMe ha venido muy bien ^.^
Muchas gracias
Pues a mi no me aparece la opción "secuencia de comando"... ya no funciona?
ResponderEliminarComo puedo ponerle georeferenciacion al formulario que me estan enviando???
ResponderEliminarMuy buena expllicacion, podrias decirme que es la e que aparece entre parentisis "function contactUsMailer(e)". Y tambien quisiera que me expliques como puedo validar los datos que va digitando el usuario antes de que lo envie?
ResponderEliminarAmigo, esta super tu post, sabes como hacer un apps script que me sirva como login de un formulario por ejemplo? osea que antes de cargar form le pida usuario y pass y valida y si es correcto lo deje cargar el formulario. gracias.
ResponderEliminarhola, sabes estoy hace días intentando hacer un script para esto mismo, pasa que ningún tutorial me sirve, no se si me podrías ayudar.
ResponderEliminarmi problema es que no tengo el formulario a través de google form, es un formulario de una web para crear aplicaciones moviles, y necesito un script que me reciba la información, y luego la envie a mi correo.
el hacer que el script envie un correo ya lo tengo, mi problema es hacer que el script obtenga la información, he hecho algunas pruebas y me avisa que necesito el comando doGet, que ya lo agregué, pero aun así me sigue sin funcionar.
podrías ayudarme de alguna forma? que puedo hacer? desde ya gracias :)