¿Alguna vez han tenido la inquietud que cuando responden una encuesta o un examen en línea les envíe un correo con sus respuestas, o si crean un formulario de registro le envíe a cada inscrito un correo con el resumen de su evento o similar?
La respuesta siempre caía en “hay que hacer un sistema que nos haga eso”, pues ahora pueden ahorrarse unos cuántos pesos y un tiempo considerable, les comparto un tutorial que realicé donde al momento en que se envía un formulario hecho con Google Drive, además de que tenemos un registro, le envía un correo al usuario que ha completado el formulario con un resumen de sus respuestas. Estas son las bases, si quieres hacer algo más complejo, ya dependerá de tu imaginación.
El código pueden encontrarlo en este enlace.
Enjoy!
Muchas gracias por tu tutorial! Me ha servido muchísimo 🙂
Hola buenas tardes , estoy intentando generar la respuesta automatica a un formulario de google siguiendo el tutorial pero no he podido ya que me sale el siguiente error: SyntaxError: Unexpected identifier (línea 4, archivo “Código.gs”) me podrias ayudar por favor. para poder solucionarlo.
Muchas gracias
Estimado,
Necesito que en la respuesta automática vaya un numero correlativo correspondiente a la fila donde se ingresaron los datos correspondientes al formulario.
Me podrías ayudar.
Puedes encontrarlo aquí http://jafrancov.com/2016/01/consecutivo-email-form-google-drive/
hola buenas tardes me pidieron hacer un formulario para el control de peticiones del area de sistemas de soporte tecnico. le quiero agregar un numero consecutivo.
cada vez que la persona llene el formulario y mande un ticket que me aparesca ese formulario a mi pero con un numero
¿si se puede???
Aquí está la respuesta http://jafrancov.com/2016/01/consecutivo-email-form-google-drive/
Sensacional, pero el enlace al codigo esta roto
Solamente lo moví de ubicación, link actualizado.
Hola me pidieron que se envie junto al texto del correo una imagen de la empresa se podría hacer eso?
En el código html (variable body_html) agrega un tag img, y sube la imagen a algún sitio donde pueda accesarse, quedando algo como:
Asegúrate que la imagen sea de un tamaño adecuado, para que se vea bien en el correo.
Lo intente tal cual y me marca error en el simbolo < menor que. ayuda 🙁 ,ademas de que no me aparece lo que haces de trigger, donde lo encuentro?
como se puede extraer una cadena de caracteres de 5 listas desplegables (primeros 3 caracteres) del formulario de google? es para armar una clave con estos datos.
Puedes hacerlo con .slice(), por ejemplo:
var uno = “ABCD”
var dos = “EFG1”
var resultado = uno.slice(0,2) + dos.slice(3,3)
resultado sería “ABC1”
y si quisiera agregar una imagen en el correo, cómo puedo realizar lo??
En el código html (variable body_html) agrega un tag img, y sube la imagen a algún sitio donde pueda accesarse, quedando algo como:
Asegúrate que la imagen sea de un tamaño adecuado, para que se vea bien en el correo.
Mi formulario esta dirigido a dos segmentos: A y B, los identifico al incio del mismo.
A contesta preguntas 1, 2, 3 y 4 y se envía formulario.
B contesta preguntas 5, 6, 7 y 8 y se envía formalario.
El correo que recibe A lleva las preguntas 5,6,7 y 8 vacías…
El correo que recibe B lleva las preguntas 1,2,3 y 4 vacías…
Que puedo hacer para que sólo reciban las que les corresponden y que son las que contestaron.
Muchas gracias.
Un IF hace la magia:
Hola Alex, he utilizado el código pero no funciona, ya lo he revisado y no le encuentro la falla, cuando lo corro con el botón de “ejecutar” aparece el siguiente mensaje en rojo TypeError: No se puede leer la propiedad “values” de undefined. (línea 4, archivo “Código”) me podrias ayudar a descubrir que esta pasando? la linea 4 es var timestamp = e.values[0];
No funcionará si intentas correrlo desde la consola donde tienes el código (botón de ejecutar), ya que no está recibiendo datos de ningún formulario, necesitas hacer la prueba activando los disparadores o triggers y luego respondiendo el formulario, tal cual se muestra en el video.
Gracias por su oportuna respuesta. He seguido los pasos del video pero no funciona, no envía el correo, Claro que el código lo copie sobre una hoja que ya tenia y por supuesto las variables son concordantes con los de la hoja de calculo. ¿Le podría enviar el código?
Muchas gracias Alex.. Seguí todas las instrucciones del video y funciona GENIAL!!!
Solo que hay actualizaciones de Gmail, que tuve que activarlo de otro modo.. pero todo funciona bien.. excelente
Es posible adjuntar un pdf? o adjuntar un link en el correo?
Ambas cosas es posible, sin embargo el PDF es un tanto más complejo, puedes agregar el link pero tener el PDF publicado en algún lado en internet
Hola Alex, ¿podrías hacer un video donde se implemente lo de adjuntar un pdf que se modifique con los datos del formulario?
Gracias.
Hola, he visto varias veces tu video y no me corre. He seguido tus pasos y me sale aparece el siguiente mensaje en rojo TypeError: No se puede leer la propiedad “values” de undefined. (línea 4, archivo “Código”). Me podrias ayudar a descubrir que esta pasando? la linea 4 es var marca = e.values[0];
No ejecutes el código desde consola, no funcionará, se ejecutará correctamente cuando reciba una respuesta que venga del formulario, tal como funciona en el video, saludos.
cuando lo ejectuo de la consola me ocurre ese error, hago lo que dices de completar el formulario pero tampoco me envia el mail
SI ya lo ejecutaste respondiendo el formulario entonces no está ligado el código al activador, revisa eso y debe funcionar, saludos
Buen día, sabes donde puedo encontrar mas códigos? Es que debo generar una respuesta indicando ciertos parámetros condicionales y no lo he conseguido, el correo se envía pero con información incompleta.
Muchas gracias
gracias por tu publicación!! pero el “evalues” no me funciona como mencionas coloque la columna que le corresponde [5] y no me retorna el valor!! si retorna el enunciado!!! probé con evalues [0] y si me retorno el valor de la marca temporal. me podrías ayudar
function Rtaformulario(e){
var emaildeusuario=”xxxx@gmail.com”;
var mensajeemail=”Se requiere programar la siguiente solicitud – ” + e.values[4];
MailApp.sendEmail({
to:emaildeusuario,
subject: “Tienes una nueva solicitud”,
htmlBody:mensajeemail
}
);
}
Hola Alex! no me aparece la opción “current projects trigger” en el menu de herramientas…hice todo tal cual dices, pero llego aqui y me doy con esto…
se te ocurre algo?? mil gracias de antemano!
Buen día Alex, disculpa estoy revisando tu tutorial y me ha funcionado, pero hay alguna manera para que una persona al llenar el formulario le haga legar un correo de aprobación a un gerente y este al responder si acepta o no y con esa respuesta me llegue a mi realizar el proceso interno siguiente?
Hola, una preguntota, ¿como puedo hacerle para que dependiendo de lo que conteste en la pregunta de un formulario sea la información que se le envia?, trabajo para colegios y hay varias secciones, entonces me interesa que se les mande la información especifica de la sección que solicitan,
https://docs.google.com/forms/d/e/1FAIpQLSdqs1c2fDmVHwZ996y3neoEzVmeYoyxKyBKY35nJRsu3H3zlg/viewform
Si gustas puedo pagar por la asesoría, muchas gracias.
Estimado Alex, una consulta, como puedo hacer para configurar el filtro del correo para que ciertos emails queden registrados en una hoja de calculo de google drive?
Hola Alex, me funciono el numero consecutivo pero no me deja enviar el correo, estuve viendo el video pero la version cambio entonces no se si el activador es el trigger o bien hay que agregarlo en otra funcion, podrias apoyarme, lo del envio a pdf seria genial, voy a solucionar primero esto y luego agrego el codigo que tienes.
Alex,
No he podido hacer el que el activador funcione. El mail no me llega a la casilla que debería. ¿Me podrías ayudar?
Hola no puedo realizar el ultimo paso que es para enviar automaticamente, no encuentro la opcion de –Current projects triggers–
Hola, buen día
Se puede hacer el envio de correos automaticos bajo una condicional? Ejemplo, basandonos en la respuesta de una columa A, si la respuesta es “1” envia las respuestas al correo X, si la respuesta es “2” envia las respuestas al correo Y, y si la respuesta es “3” envia las respuestas al correo Z.
Gracias!
Hola un saludo, gracias por compartir los tutoriales, soy Mario ENrique Henao Cifuentes docente de la Escuela Normal SUperior Jorge Isaacs de Roldanillo – Valle – Colombia, Licenciado en educación infantil y actualmente estoy en mi proyecto de investigación de maestría, quiero hacer la siguiente consulta:
Debo hacer un test en google drive, pero que le regrese al usuario el análisis en un gráfico de Radar y unas sugerencias según los resultados, de esta manera me queda a mi la información de este usuario y el tendrá su información también,
Este formulario permite que el maestro pueda saber en que nivel se encuentra en cada competencia TIC para el desarrollo Profesional docente.
Este es el que yo presente en una formación con una universidad aca en Colombia:
http://apps.cpe.gov.co/competencias-tic/encuesta/
El informe de prueba lo muestra de la siguiente manera: (es el mio)
http://apps.cpe.gov.co/competencias-tic/?name=Mario%20Enrique%20Henao%20Cifuentes&tec=34&ped=33&com=34&ges=34&inv=32&
En el siguiente enlace está el que yo diseñe pero que debo adaptar para que quede como en los enlaces anteriores, puesto que de esta manera me demoro más para sacra los análisis no seria automático.
Mi test:
https://docs.google.com/forms/d/e/1FAIpQLSdWidn_5kFi2PwcTtFOY3HGV1xtKoPDjKQD6hzYSJd3dK8u5Q/viewform
Debo hacer esta implementación, me urge saber como se construye y la verdad he buscado pero no he podido hacerlo, no se si usted me pueda colaborar en esta parte o decirme con quien puedo comunicarme.
No se cuanto me puedan cobrar por enseñarme esta parte.
En espera de su respuesta le estoy muy agradecido
Excelente video! pero lo único que no encuentro es la opción de current project’s triggers en la cinta de recursos.
Buen día, si tengo varias hojas en mi libro de excel, como selecciono de cual de las hojas va a tomar los datos que envía en el correo; muchas gracias
HOLA PUEDO ADJUNTAR UN ARCHIVO EN LA RESPUESTA?
Hola quisiera saber, como puedeo ingresar que la respuesta llegue a correos como copia estoy utilizando MailApp.sendEmail(mail, asunto, plain_email_body, OpcionesAvanzadas)
donde mail es el correo del que llena el formulario, quiero que ese mensaje llegue a mi correo y al correo del jefe
Hola, estoy siguiendo el tutorial pero ya no me aparece la opción trigger, donde la encuentro?
Buen día, Alex:
He visto tu tutorial sobre asignar un consecutivo a los formularios de google y enviar un correo automático. Sin embargo, no ha enviado los correos. ¿A qué se debe esto? Lo he intentado varias veces y no llega ni al spam. Agradezco tu colaboración
function sequenceNumberOnFormSubmit(e) {
// Call the function that generates the sequence number
var record = addSequenceNumber();
var timestamp = e.values [0]
var consecutivo = e.values [1]
var name = e.values [2]
var dni = e.values [3]
var filiacion = e.values [4]
var mail = e.values [5]
var subject = “Revista Innovar” + record;
var plain_email_body = “Respetado autor” +
“\n\n”+ name +
“\n\n” + filiacion +
“\n\n” +
“Hemos registrado su respuesta en nuestro formulario para autor” + timestamp +
“\n\n” +
“Este número de consutivo” + record + “deberá relacionarlo en el formulario del OJS al momento de postular su documento”;
var html_body = “Respetado autor” +
“\n\n”+ name +
“\n\n” + filiacion +
“\n\n” +
“” +
“Hemos registrado su respuesta en nuestro formulario para autor ” + timestamp + “” +
“” +
“Este número de consutivo ” + record + ““+”deberá relacionarlo en el formulario del OJS al momento de postular su documento”;
var advancedOpts = { name: “Revista Innovar”, htmlBody: html_body };
MailApp.sendEmail({
to : mail,
Subject : subject,
htmlBody : plain_email_body,
firma : advancedOpts});
}
function addSequenceNumber() {
// Obtain the sheet where we save the answers
var sheet = SpreadsheetApp.getActiveSheet();
// Obtain the last row with data
var row = SpreadsheetApp.getActiveSheet().getLastRow();
// Sequence number (record) minus 1, this is due to the headers
var record = row – 1;
// Set (or write) the sequence number in the cell specified, change number 4 for the rigth column
sheet.getRange(row,2).setValue(“RevInn0” + record);
// Return the sequence number
return record;
}