domingo, 23 de septiembre de 2012

Enviando mensaje al correo electrónico desde google docs

En una entrega anterior revisamos como crear un formulario de contacto usando google docs (ver entrada) ahora vamos a revisar como mejorar el envío de correo electrónico adicionando una función sendmail en nuestro google docs. 

Google docs es una excelente herramienta que nos permite adicionar formularios o encuestas de forma rápida a nuestro sitio web, pero su configuración original solo permite enviar una alerta de que el documento ha sido modificado. 

Lo que vamos a intentar es que se nos envíe un email con los datos que se ingresaron en el formulario.  Con esto vamos a evitar tener que abrir el documento cada vez que alguien ingresa los datos, estos datos nos son entregados directamente en nuestro correo, pero seguirán siendo almacenados en el documento en línea.

Del formulario de Google Docs directo a su bandeja de entrada!

El truco esta en asociar una rutina de envío de correo con nuestro documento de google docs cada vez que de dispare la acción envíar formulario.   Está rutina se escribe usando "Google Apps Script",  Cómo lo hacemos?  leemos los valores enviados que el usuario a ingresado a través del formulario y los enviamos en un mensaje a una dirección de email predefinida.

  1. Abrimos nuestra cuenta de google docs https://docs.google.com/

  2. Abrimos el formulario en el cual vamos a adicionar el script

  3. Vamos a menú Herramientas / Editor de secuencias de comando



  4. Adicionamos el siguiente código, que crea la función de envío del email:
    function sendFormByEmail(e) 
    {    
      // Remplace XYZ con la dirección de email que dirige el formulario 
      var email = "XYZ"; 
      var subject = "Google Docs Form Submitted";  
      var s = SpreadsheetApp.getActiveSheet();
      var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
      var message = "";    
      // Credit to Henrique Abreu for fixing the sort order
      for(var i in headers)
        message += headers[i] + ' : '+ e.namedValues[headers[i]].toString() + "\n\n"; 
      
      MailApp.sendEmail(email, subject, message); 
      
      // Esté codigo fue tomado de:
      // By Amit Agarwal - www.labnol.org
    }
    
    
  5. Guardamos dando un nombre al proyecto.
  6. Vamos al menú superior damos clic en Recursos / Activadores de la secuencia de comandos actual

  7. Nos abre una ventana de confirmación damos clic en el link:  Haz clic aquí para añadir uno ahora

  8. Seleccionamos nuestro proyecto, que se ejecute en eventos de la hoja de cálculo al enviar el formulario.   Damos clic en guardar, Autorizamos.

     
Lito con esto cada vez que alguien diligencie nuestro además de la notificación de cambio del documento, llegará un email con los datos del contacto, lo que nos evitará tener que estar entrando al documento para revisar estos nuevos datos. 

Si te ha servido está guía, puedes invitarme un café !

 

3 comentarios:

  1. hola, me gustaria que me pudieras ayudar, he puesto el codigo, pero me aparece un error en la linea once al momento de ejecutar
    TypeError: No se puede leer la propiedad "namedValues" de undefined (linea 11)

    He tratado de modificar la la linea de comando pero nada me sirve. si me puedes ayudar te lo agradeceria mucho.

    ResponderEliminar
    Respuestas
    1. Un poquito complicado ayudarte sin ver exactamente que hiciste por el error lo único que te puedo pedir es que revises si al crear la función estas enviando la variables e.

      sendFormByEmail(e)

      Eliminar
    2. Me ha pasado lo mismo que a ti, pudiste solucionar el problema? como lo hiciste?

      Eliminar

Desea contactar con nosotros, deje un comentario y pronto le daremos respuesta.