Automatizar envío de correos en Gmail con Google Apps Script

Automatiza emails en Gmail

En este artículo les quiero dejar una forma de automatizar el envío de correos electrónicos en Gmail mediante un pequeño script generado con Google Apps Script;  pero primero veamos qué es esta herramienta y qué podemos hacer con ella.

Google Apps Script es un lenguaje de scripting basado en Javascript que te permite interactuar con distintas aplicaciones de Google como Gmail, Analytics, Drive, etc. pero también nos permite trabajar con distintos documentos de Drive como Docs, Forms, Sheets,etc.

Lo mejor de todo es que no tenemos que instalar nada, simplemente creamos un proyecto en Drive usando nuestra cuenta de Google y rápidamente tenemos todo el entorno listo para desarrollar nuestras aplicaciones.

Preparar el proyecto

Bueno, ahora que sabemos que es Google Apps Script, veamos cómo automatizar el envío de e-mails en Gmail. Obviamente, debemos iniciar sesión con nuestra cuenta de Google en Drive, luego debemos crear un archivo de tipo «Secuencia de comandos».

Google Apps Script

Es posible que no tengas la opción mencionada por lo que deberás agregarla presionando el botón «Conectar más aplicaciones» y buscar la opción Google Apps Script  tal como muestra la imagen siguiente.

Google Apps Script 6

Luego nos muestra una ventana donde debemos seleccionar la opción «Proyecto en blanco».

Google Apps Script 2

Una vez hecho esto, podemos darle un nombre al proyecto y ya tenemos el entorno de desarrollo listo para trabajar.

Google Apps Script 3

Código de envío de e-mails

El código para enviar correos es el siguiente:

function EnvioMail() {

  var direccion = 'tu_direccion_aqui';
  var mensaje = 'Este es un mail automatico.';

  // obtenemos la fecha de hoy y le damos formato
  var hoy = new Date(); 
  var mes = Utilities.formatDate(hoy,Session.getTimeZone(), "MM");
  var dia = Utilities.formatDate(hoy,Session.getTimeZone(), "dd");
  var fecha = dia+"/"+mes;

  //armamos el asunto del mail
  var asunto ='Envio automatico de Tecnopedia.net: '+fecha+' ';

  //usamos la API de Gmail para enviar el mail.
  GmailApp.sendEmail(direccion, asunto, mensaje);
}

Es bueno aclarar que los e-mails enviados por este script tendrán como remitente la cuenta con la que fue creado.

Para probarlo basta con presionar el botón «Ejecutar» presente en la barra de herramientas, otro detalle es que se solicitarán permisos para que el script pueda realizar la tarea solicitada.

Google Apps Script 4

Automatizar envío

Finalmente, nos falta automatizarlo, para ello presionamos el botón «Activadores del proyecto» junto al botón de «Ejecutar». Ahi debemos configurar un activador o evento que dispare nuestra función de envío de e-mails. Vamos a elegir que se dispare por tiempo, ya sea diario, semanal, mensual, etc. Una vez configurado el activador los guardamos y está listo; ya tenemos automatizado el envío de e-mails.

Google Apps Script 5

Espero que les sea útil y que les sirva de punto de partida para hacer mas cosas con Google Apps Script; y recuerden que si tienen algún script interesante pueden compartirlo aquí en el sitio.

Ah! y no te olvides de leer mi artículo nuevo! Cómo  mejorar tu productividad usando Apps Script.

Créditos de fotografía principal: ntr23 via photopin cc

Juan Benitez

Fundador de Tecnopedia.net. Licenciado en Informática, desarrollador Web, Android y PHP. Apasionado de las tecnologías y el fútbol. Reparto mis días programando, creando sitios, apps o escribiendo en @Tecnopedianet... y sí, además tengo esposa y una hija ;)

View all posts by Juan Benitez →

27 thoughts on “Automatizar envío de correos en Gmail con Google Apps Script

  1. Espectacular Juan, funciona de lujo!

    Una pregunta, si quisieramos añadir un adjunto, hay alguna manera de poder hacerlo?

    Muchas gracias!

  2. Hola,
    Gracias por tu post.
    Se pueden enviar mensajes a una lista de usuarios, sin que aparezca el mail?
    muchas gracias
    Saludos cordiales
    Montserrat

  3. Hola, en la función sendMail puedes usar un 4to parámetro indicando una lista de emails ocultos (campo BBC):

     GmailApp.sendEmail('mike@example.com', 'Attachment example', 'Please see the attached file.', {
         bbc: 'email1@server.com'
     });
    

    te recomeindo que veas la Referencia a la API por mas opciones.
    saludos.

  4. Hola, que tal? Quise probar la aplicacion y despues la desinstale.. hice los pasos y funciono el envio automatico, ahora lo que pasa es que no dejo de recibir el mail que automatice. Ya borre el archivo script y sigo recibiendo, alguien sabe como detener el envio?

  5. Hola crack!!
    Lo primero darte las gracias por el gran trabajo que haces.

    Tengo una duda , sería posible reenviar un correo sin que aparezca el remitente?
    Es decir que aparezca como remitente la dirección que reenvía ?
    Seria también con script?
    Como??
    Gracias.

  6. Buenisimo!!!
    Gracias, recuerden que para enviar a varios destinatarios deben separar con ,

    muchas gracias

  7. Buenas tardes amigo Benitez.

    Quisiera consultarte acerca de un punto que me interesa resolver.

    Como administrador de un condominio, genero mensualmente un recibo en excel, en realidad se convierten en 64 archivos con la misma información basica pero cada uno representando un apartamento con nombre de propietario diferente.

    Deseo enviar automaticamente correos con los archivos generados a cada dirección de propietario.

    Esto es posible?

    Agradecido.

  8. Estupendo script Juan, tienes un ejemplo de envío a la Lista de correos de uno en uno, esto a fin de prevenir la detección de Spam ? Saludos

  9. Hola Mauricio, estoy preparando un articulo a raíz de la pregunta anterior de Jesús Meneses que creo te será de ayuda. En unos días lo publico y les aviso.

    saludos, Juan.

  10. Muchas gracias capo,
    me sirvió de mucho, una pregunta se puede adjuntar archivos que estén en tu pc no en el google drive?

  11. Hola Martin, lo que consultas no se puede hacer según tengo entendido. Desde Google Script sólo se puede adjuntar archivos del Drive.

  12. Muchas gracias por la informacion. Me sirvio mucho. Pero lo que me gustaría hacer es conectar con una BD de la que obtener los usuarios a los que le voy a mandar el correo. ¿Tienes algo asi?
    Gracias

  13. Hola Juan, te consulto; necesito enviar un mail todos los días con un archivo adjunto (es un .mp3 que los tengo numerados) a todos los contactos que tengo; me gustaría que se envíen en forma oculta; eso lo ya lo probé y funciona bien, pero te consulto porque son casi 100 contactos que tengo……muchas gracias!

  14. Hola Juan,te consulto porque quiero enviar un mail en forma automática, es un mail diario y con un adjunto (archivo .mp3), cada día es un archivo diferente que los tengo enumerados; también necesito enviarlos a todos mis contactos de gmail, que son cerca de 100…..
    Gracias!
    Saludos

  15. Hola me parece excelente, lo estoy probando, pero me dice que el método Session.getTimeZone() es obsoleto, que use una opcion diferente. que otro método puedo usar. gracias

  16. hola bueno tengo un formulario donde pido correo y nombre como hago para conectarlo al scrip y que le envie correos a todos los que estan en la hoja de calculo que genera el formulario?, o cuando entre un nuevo usuario

  17. Hola Juan, es muy interesante tu articulo.

    Por otro lado, sabes si es posible que desde un formulario puedas adjuntar archivos y que a su vez estos archivos se guarden en Drive?

    De antemano gracias.

  18. Hola, realice paso a paso y me funciono, muchas gracias. Consulte esta herramienta para poder generar los correos de felicitaciones del personal de oficina con el que trabajo. Como puedo agregar multiples fechas con los distintos correos, es decir que el primero de cada mes, ya tenga programado todos los correos de felicitaciones de los compañeros de trabajo programados en el envio automático. 

  19. Hola que tal 

    es muy interesante todo este tema de los mail´s automaticos. 

    Prodrias ayudarme a comprender este codigo para adjuntar archivos?¡ mi archivo es un exel que tengo en mi cuenta de DRIVE pero no logro adjuntar el archivo dado que no comprendo como realizar el adjunto-

     // Send an email with a file from Google Drive attached as a PDF.  

    // aqui me lanza el error: No se ha encontrado ningún elemento con la ID proporcionada o no tienes permiso para acceder a él. —>>>

    var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');  

    <<—

     

    GmailApp.sendEmail('mike@example.com', 'Attachment example', 'Please see the attached file.', {     attachments: [file.getAs(MimeType.PDF)],      

    name: 'Automatic Emailer Script'  });  

  20. Hola que tal, interesante todo esto de la automatizacion de mail´s

    Quisiera saber si puedes ayudarme a la comprension del codigo para adjuntar archivos.

     

    dado que no comprendo, un erro que me lanza en un codigo que compratiste con anterioridad aqui.

     

    el codigo es el siguiente.

     

     
    
     // Send an email with a file from Google Drive attached as a PDF.
     var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); <<AQUI ME LANZA ERROR>>
     GmailApp.sendEmail('mike@example.com', 'Attachment example', 'Please see the attached file.', {
         attachments: [file.getAs(MimeType.PDF)], <<MI ARCHIVO ES EXCEL>>
         name: 'Automatic Emailer Script'
     });
    
    Agradecerua tus comentarios a mi peticion.
    muchas gracias de antemano.
     
  21. cuando termino me lanza este errro por fvor ayudarme

     //usamos la API de Gmail para enviar el mail.
      GmailApp.sendEmail(xxxxx@gmail.com, dsdsd, sdsdsd);
    }

     

    Falta ")" detrás de la lista de argumentos. (línea 16, archivo "Código")

  22. Juan use tu codigo para el evento onOpen , pero por alguna razon no funciona, sin embargo si lo ejecuto fuera de ese evento si funciona correcto

Comments are closed.