En este tutorial vamos a aprender a enviar correos electrónicos más ricos y personalizados desde Google Sheets usando Google Apps Script. La idea es que, además de enviar un texto simple, podamos incluir adjuntos, enlaces, imágenes y formato HTML para que nuestros correos sean mucho más atractivos y profesionales. Esto complementa y mejora todo lo que hemos visto en tutoriales anteriores sobre envíos de correos sencillos, con plantilla o masivos.
Si quieres ver el paso a paso en video, aquí te lo dejo para que lo sigas con calma. Ahora sí, vamos a meternos en el código y te voy a mostrar cómo convertir un mensaje de texto simple en un correo con formato HTML, para que puedas incluir negritas, itálicas, listas, enlaces, imágenes y hasta adjuntos vía Drive.
Creando la función para enviar correos con HTML
Primero, vamos a crear una función que reciba los parámetros básicos: correo electrónico, asunto y mensaje, pero además vamos a agregar el mensaje en formato HTML. Esto nos permitirá enviar correos que tengan un cuerpo enriquecido, y no solo texto plano. La función básica para enviar correos en Google Apps Script es GmailApp.sendEmail, que acepta varias formas de argumentos.
function enviarMail(email; asunto; mensaje; mensajeHTML) {
GmailApp.sendEmail(email; asunto; mensaje; {
htmlBody: mensajeHTML
});
}
En este código, mensaje es el texto plano que se mostrará solo si el cliente de correo no soporta HTML (algo muy raro hoy en día), y mensajeHTML es el cuerpo enriquecido que queremos enviar. Es buena práctica siempre incluir ambos.
Construyendo el mensaje HTML dinámico
Ahora necesitamos construir el cuerpo HTML que vamos a enviar. Para esto podemos usar un editor HTML online si no sabes programar, o escribir directamente el código. Lo importante es entender que HTML trabaja con etiquetas para dar formato, por ejemplo:
<strong> para negrita, <i> para itálica, <h1> para encabezados grandes, <ul> y <li> para listas, <a> para enlaces, y <img> para imágenes.
Aquí tienes un ejemplo sencillo de cómo crear un mensaje HTML personalizado con variables que vienen de una fila de datos en Sheets:
function crearMensajeHTML(datos) {
var mensajeHTML = '<h1>Estimado ' + datos[1] + '</h1>' +
'<p><strong>Muchas gracias por su compra.</strong></p>' +
'<ul>' +
'<li>Producto: ' + datos[2] + '</li>' +
'<li>Valor: ' + datos[3] + '</li>' +
'<li>Fecha: ' + datos[4] + '</li>' +
'<li>Tipo de pago: ' + datos[5] + '</li>' +
'</ul>' +
'<p>Para más información, visita <a href="https://miweb.com">nuestra web</a>.</p>' +
'<img src="URL_DE_LA_IMAGEN" width="200" height="200" alt="Logo">';
return mensajeHTML;
}
En este ejemplo, datos es un arreglo con la información de la fila activa en nuestra hoja de cálculo, donde datos[1] es el nombre, datos[2] el producto, y así sucesivamente. Puedes modificar el HTML para incluir más elementos, enlaces o imágenes.
Cómo incluir enlaces y adjuntos desde Google Drive
Un truco para enviar adjuntos sin complicarte con archivos es subirlos a Google Drive y compartirlos con enlace público. Luego, simplemente incluyes ese enlace en tu mensaje HTML como un link. Por ejemplo:
var linkDrive = 'https://drive.google.com/file/d/ID_DEL_ARCHIVO/view?usp=sharing';
var mensajeHTML = '<p>Aquí está tu portafolio: <a href="' + linkDrive + '">Descargar PDF</a></p>';
Así, el receptor podrá hacer clic y descargar el archivo sin que tengas que adjuntarlo físicamente en el correo, lo cual es más eficiente y evita problemas con el tamaño del correo.
Insertando imágenes en el correo
Para insertar imágenes, lo ideal es que estén alojadas en una URL pública. Puedes usar Fotos de Google o tu sitio web para subirlas y copiar la dirección de la imagen. Luego la insertas en el HTML así:
<img src="URL_DE_LA_IMAGEN" width="200" height="200" alt="Descripción de la imagen">
Recuerda ajustar el tamaño con los atributos width y height para que la imagen no se vea demasiado grande o pequeña. Así tu correo tendrá una mejor presentación visual.
Integrando todo en el envío masivo e individual
Finalmente, debes modificar tus funciones de envío masivo y envío individual para que llamen a esta nueva función que envía correos con HTML. Por ejemplo, en el envío masivo obtienes los datos de cada fila, creas el mensaje HTML con crearMensajeHTML(datos) y luego llamas a enviarMail(email; asunto; mensaje; mensajeHTML).
Así, cada correo que envíes podrá tener un formato personalizado, con enlaces, imágenes y hasta adjuntos vía Drive, lo que mejora mucho la experiencia de tus contactos y clientes.
Recomendaciones finales y buenas prácticas
Un par de consejos para que tus envíos sean seguros y efectivos:
- Incluye siempre el mensaje en texto plano además del HTML para asegurar compatibilidad.
- Antes de enviar correos masivos, haz pruebas individuales para verificar que todo se ve bien.
- Agrega confirmaciones en botones de envío para evitar enviar correos por error.
- Usa enlaces públicos para adjuntos y verifica los permisos para que tus contactos puedan acceder sin problema.
Con estas bases, puedes empezar a crear sistemas de envío de correos personalizados desde Google Sheets que te ahorrarán tiempo y mejorarán la comunicación con tu audiencia.
Conclusión
En resumen, aprendimos a:
- Crear una función para enviar correos con mensaje en texto plano y HTML.
- Construir mensajes HTML personalizados usando variables de Google Sheets.
- Incluir enlaces a archivos en Drive como adjuntos prácticos.
- Insertar imágenes en el cuerpo del correo para mejorar la presentación.
- Modificar funciones de envío masivo e individual para usar estos mensajes enriquecidos.
Con estos pasos, tus correos dejarán de ser simples textos y se convertirán en comunicaciones profesionales, ricas en contenido y visualmente atractivas. Lo mejor es que todo esto lo puedes hacer sin salir de Google Sheets y con un poco de código que te he mostrado.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.