Enviar emails desde formularios de Google
Publicado el
A veces uno necesita tener una capacidad de envío de emails más allá de la propia de Google Forms de “Tienes una nueva respuesta” o “Aquí puedes ver lo que has contestado”. Para eso y mucho más…aquí tienes la guía definitiva para poder envíar emails (con tu cuenta de la suite de google) a quien quieras con el formato que mejor te venga y con la información como más te guste.
Creación de un Formulario de Google
Lo primero que tenemos que hacer es acceder a la parte de gestión de formularios de google: https://forms.google.com.
Una vez estéis ahí veréis algo similar a esto:
Como podéis ver hay un icono muy grande con el símbolo de ”+” lo pulsamos y ahí nos llevará a una pantalla en la que podremos agregar los campos que queramos:
Podéis visitar el formulario que he creado aquí.
Acceso a la edición de código
Una vez hayamos pinchado tendremos que poner un código similar a este para que podáis procesar la información que se envía al cumplimentar el formulario:
function emailOnFormSubmit(e) {
// Crea tantas variables como respuestas quieras procesar
var itemResponses = e.response.getItemResponses();
var message = "";
var confirmation = "";
var emailLinkTo = "";
var name = "";
var replyTo = e.response.getRespondentEmail();
// Aquí podemos tener este campo para añadir emails en cc siempre separados por comas
var ccEmails = "" + replyTo;
var senderName = "Abel Zafra";
// Procesamos las respuestas y nos quedamos con las que nos interesan
// TIP IMPORTANTE: buscar por título, que sea el mismo que en el formulario
for (var i = 0; i < itemResponses.length; i++) {
var itemTitle = itemResponses[i].getItem().getTitle();
//Es importante limpiar el itemResponse ya que viene entrecomillado de ahí el replace del final
var itemResponse = JSON.stringify(itemResponses[i].getResponse()).replace(/['"]+/g, '');;
switch (itemTitle){
case "¿Vas a querer asistir?":
confirmation = itemResponse;
break;
case "Dime tu email para enviarte el enlace de al Streaming":
emailLinkTo = itemResponse;
break;
case "Dime tu nombre para saber como llamarte :)":
name = itemResponse;
break;
}
}
// El asunto del email
var subject = "[Confirmación Asistencia] - Mi evento virtual";
// El cuerpo del email. Este es importante porque es para aquellos navegadores o dispositivos
// que no soportan HTML (ya casi no quedan, pero hay que tenerlo en cuenta)
var emailBody = "Hola " + name + ":\n " +
"\nHe recibido correctamente tus respuestas, si estás interesado te enviaré el link en cuanto esté disponible.";
// El cuerpo del email. Este es el que va en formato HTML para casi todos los navegadores
// o dispositivos
var htmlBody = "Hola " + name + ":<br/>" + "<br/>He recibido correctamente <b>tus respuestas</b>. Como aún no tenemos el enlace, puedes encontrar <a href='https://www.abelzafra.es' targe='_blank'>aquí</a> información sobre el evento.<br/>";
//Aquí podemos tener otras condiciones en nuestro código:
// .....
htmlBody += "<br/>Un saludo,<br/>Abel.";
// Otras opciones sobre el uso de envío de emails usando sendEmail de Google
// https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)
var advancedOpts = { name: subject, htmlBody: htmlBody, cc: ccEmails, name:senderName, replyTo: replyTo};
// El envío del mail
MailApp.sendEmail(emailLinkTo, subject, emailBody, advancedOpts);
}
Una vez hayamos puesto el código nuestro formulario aún no va a enviar esos emails, para ello tenemos que crear un nuevo activador y configurarlo.
Configuración del disparador para el envío
Una vez que accedamos a la vista de activadores crearemos uno nuevo y lo configuraremos de la siguiente manera:
Al ser una ejecución de un tercero, Google nos pedirá confirmar que autorizamos a Google a realizar la acción en nuestro nombre para ello nos mostrará 2 ventanas que deberemos autorizar en ambos casos:
Probar el envío
Ahora ya solo os queda acceder a vuestro formulario y verificar que os llega el email que esperábais :).
Espero que os haya gustado y servido.