← Volver

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:

Pantalla Inicio Google Forms

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:

Pantalla Creación Formulario Google Forms

Podéis visitar el formulario que he creado aquí.

Acceso a la edición de código

Acceso a la edición de secuencia de comandos de Google Forms

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

Acceso a los activadores

Una vez que accedamos a la vista de activadores crearemos uno nuevo y lo configuraremos de la siguiente manera:

Configuración activador envío Google Forms

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:

Selección de cuenta

Autorización de ejecución

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.

productivitygoogle formsscriptsGoogle App Script