Cómo enviar emails desde Google Apps Script

Artículo perteneciente a la gestión de gmail desde Google Apps Script

Siempre va bien que cuando automatizas algún tipo de operación esta te pueda avisar mediante correo electrónico que algo va mal o que se ha producido algo fuera de la común.

Ya veréis que enviar correos con GAS es extremadamente sencillo y muy útil.

Las herramientas de GAS para enviar correo son extremadamente completas pero si solo queremos enviar un correo sencillo es muy fácil.

Con un ejemplo lo veréis todo más sencillo.

function EnviarCorreo()
{
   MailApp.sendEmail('ladirecciondecorreo@quetuquieras.com', 'Titulo del email', 'Contenido del email');
}

Con una simple linea podemos enviar un correo y es fácil unirlo a cualquier otro proyecto que tengamos para notificar problemas o informar de cambios.

Se os ocurren otras aplicaciones?

26 comentarios:

  1. Deseo que esté pasando un buen día.

    Escenario:

    He elaborado un Script en Hojas de calculo de Google donde envío correos electrónicos personalizados de forma automática a los usuarios quienes lo diligencian, pero me surge una preguntas debido a cosas que aúno he podido realizar y así dar fin a este proyecto personal:

    1. Cómo puedo agregar estilos (saltos de linea, colores, tamaño del texto, cursiva y negritas al texto en Google App Script).

    Agradezco de antemano la ayuda que me puedas brindar.

    ResponderEliminar
    Respuestas
    1. En una palabra: CSS. Deberás montar un html con su css incorporado y ponerlo en el correo. Si me das unos dias lo intento implementar y lo publico.
      Nos vemos

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
  2. Buenas noches:

    Justo estoy buscando insertar imagenes por src de un URL en mi plantilla de correo, pero no lo he podido hacer

    ResponderEliminar
    Respuestas
    1. Tiene mas pinta de ser un problema de html que de GAS... has probado con < img src = "direccion de la imagen" >

      Eliminar
  3. Buenas tardes,
    tengo la siguiente pregunta, si tengo un archivo de drive y en una celda tengo una lista desplegable como hago para que al momento de seleccionar un valor de esa lita mande un correo electrónico a cierta persona. No siempre es al misma persona.
    mil gracias.

    ResponderEliminar
    Respuestas
    1. Que conste que me lo he estado mirando, pero no se puede hacer :(. Para hacer esto haría falta poner el código del envio del email en la función onEdit ( para más info: http://googleappscriptsweb.blogspot.com.es/2017/07/como-detectar-cambios-en-un-spreadhseet.html) PERO justamente Google no permite enviar emails dentro de la función onEdit. El motivo es sencillo, se podrían enviar correos electrónicos sin consentimiento del usuario y eso es algo que no podremos permitir. La única manera que le veo es que pongas una función que permita enviar los cambios a alguna dirección especificada o algo por el estilo. Me sabe mal no poder ayudar más. Nos vemos

      Eliminar
  4. Buenas tardes,

    Gracias por la inforamación, tengo una consulta:

    Tengo la hoja de calculo creada y le asigno el envío de correos automaticos, pero me envia un correo por linea. El problema, es que tengo una misma persona en varias lineas y lo que quiero es que lo agrupe y me envíe un solo correo con todas las lineas donde aparezca el nombre de esa persona.

    te agradecería tu ayuda

    ResponderEliminar
    Respuestas
    1. Si tienes dudas de aprendizaje te puedo ayudar ( de hecho con la info que hay en este blog deberías de poder hacerlo), pero para ello necesitaría que me pasaras lo que tienes hecho y me dijeras donde te has encallado. Si por contra eso que estas haciendo tiene finalidad económica o empresarial puedo ofrecerte mis servicios profesionales a través de fiveer (por lo que me explicas por 5$ sería suficiente) : https://www.fiverr.com/franciscobordas/write-a-simple-custom-script-for-your-google-sheets?arrived_from_manage_gigs=true&display_share=true

      Nos vemos!

      Eliminar
  5. Hola cómo se puede mandar un email pero en html??

    ResponderEliminar
  6. Hola, buenas tardes
    Tengo un pequeño problema. Debo enviar cuatro correos personalizados a cuatro direcciones mediante google script. Tengo la hoja de cálculo con las direcciones de correo. Además tengo que adjuntar un doc. y no se cómo hacerlo.
    Si me podéis ayudar os lo agradecería mucho.

    ResponderEliminar
    Respuestas
    1. Copypastea el código q tengas y te ayudaré en lo que pueda.

      Recordad que en esta web no hago proyectos (al menos no gratis :) ) sino que intento ayudar en los problemas que puedan ir surgiendo en el desarrollo y aprendizaje con GAS.

      Nos vemos!

      Eliminar
  7. Necesito redactar un correo por GAS pero tengo problemas con los saltos de línea de este. Utilizo "\n" pero al depurar me lo reconoce como error de codigo. Que otra opcioo tengo para editar los saltos de línea?

    ResponderEliminar
    Respuestas
    1. La unica opción que conozco es enviar el mensaje como html y usar el maquetado de html para hacer los saltos de linea (br, p/p, div/div,etc...)

      Eliminar
  8. Hola, tengo un script el cual envía correos de acuerdo a un formulario y una hoja de cálculo. Sin embargo cada vez que ejecuto el script envía correos nuevamente de todas las líneas que ya tenía diligenciadas. Cómo puedo hacer que el código envíe corres únicamente a los mail que no les he notificado, gracias!!!.

    ResponderEliminar
    Respuestas
    1. Buenas,

      Lo más normal es cuando un script se ejecuta cuando se rellena un formulario solo procese la ultima fila introducida.

      Si lo que quieres es tener un control de cuales se han enviado y cuales no, lo mejor es qu tengas un columna dedicada a ello. La marcas cuando la has procesado y si está marcada no la procesas.

      ya me diras como te va

      Nos vemos

      Eliminar
  9. Hola buenas me falta agregar el body del correo solo me llego las cabeceras, edite la secuencia de comandos desde un Google Formulario, pero solo llega el correo sin el cuerpo, falta el codigo para el cuerpo y datos

    ResponderEliminar
    Respuestas
    1. Que raro.... pega tu codigo aquí y le meto un repaso a la que pueda.

      Nos vemos

      Eliminar
  10. El mail al cual va dirigido el correo podría capturarlo a través de un inputbox?

    ResponderEliminar
    Respuestas
    1. Si claro, todo puede hacerse. Te refieres a un popup que te acepte el correo para poder enviarlo? Si, no hay ningún problema.

      Intentalo, si no sales victorioso del intento dimelo :) e intento montartelo

      Eliminar
    2. Ya he montado un artículo hablando del tema: https://googleappscriptsweb.blogspot.com/2020/08/input-box-google-apps-script.html

      Ya me diras si te ha servido, nos vemos!

      Eliminar
  11. Hola, necesito ayuda con automatizar los correos respecto a unas establecidas en el mismo formato de sheets

    ResponderEliminar
    Respuestas
    1. Hola Diego,
      Si necesitas ayuda puntual donde te has atascado pon aquí el código y explica donde tienes problemas.
      Si necesitas ayuda más profesional, tal vez pueda ayudarte mejor aqui: https://googleappscriptsweb.blogspot.com/p/como-contratar-mis-servicios-de.html

      Nos vemos!

      Eliminar
  12. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  13. Hola Diego,
    Tengo esta función que recoge los datos de una hoja de cálculo y debe enviarme a mi un mail cada vez que se pulse el botón de enviar:
    function EnviaMail() {
    var fc= SpreadsheetApp.getActive();
    var email = 'correo@organizacion.org';
    var aula=fc.getActiveSheet().getName();
    var profe=fc.getRange('L12').getValue();
    var pc=fc.getRange('L13').getValue();
    var inci=fc.getRange('L14').getValue()+'. Responsable:'+fc.getRange('L16').getValue();
    var subject = "Incidència TIC "+aula;
    var body = ' \nProfessor: '+profe+'\n \nAula: ' + aula+ '\nOrdinador:'+pc+'\nIncidència :'+inci;
    //MailApp.sendEmail(email, subject, body);
    MailApp.sendEmail({
    to: email,
    subject: subject,
    htmlBody: body
    });
    ui.alert("S'envia Mail a "+email+' amb cos: '+body);
    }
    El alert lo puse para ver que la llamada se hacía correctamente, no da ningún error, pero no envía el mensaje, me puedes decir que hice mal. Gracias.

    ResponderEliminar
    Respuestas
    1. Hola company,
      Voy muy liado para poder probarlo, pero juraria que meterle algo al htmlBody que no sea html igual no le gusta.
      Mirate las trazas de ejecución del script, deberían darte pistas de que está ocurriendo.
      Espero que lo encuentres.
      Bona nit

      Eliminar

Tal vez te interese