En este tutorial te voy a enseñar cómo enviar un correo electrónico desde Google Apps Script con una tabla en HTML incrustada, ideal para enviar cotizaciones, informes o cualquier reporte directamente desde Google Sheets o datos personalizados. Aprenderás a usar MailApp.sendEmail con el argumento htmlBody, a crear plantillas HTML dinámicas y a conectar tu script con datos reales de una hoja de cálculo. Este método es muy útil para emprendedores y pequeñas empresas que necesitan automatizar la comunicación profesional con clientes o estudiantes, sin depender de PDFs o imágenes.
Si prefieres ver el tutorial en video, te lo dejo a continuación:
¿Por qué enviar una tabla HTML por correo desde Google Apps Script?
Enviar una tabla HTML directamente en el cuerpo de un correo permite que el destinatario vea la información de forma clara y estructurada, sin necesidad de abrir archivos adjuntos. Además, puedes automatizar el envío desde Google Sheets, ahorrando tiempo y evitando errores manuales.
Paso 1: Estructura básica del envío de correo con Apps Script
Primero, debes crear un nuevo proyecto de Apps Script desde tu Google Sheets o desde script.google.com. La función básica para enviar un correo es sendEmail del servicio MailApp o GmailApp. La estructura que yo uso es la siguiente:
function enviarEmail() {
MailApp.sendEmail(
"destinatario@ejemplo.com", // destinatario
"Asunto del correo", // asunto
"Este es el texto plano", // mensaje en texto plano
{
htmlBody: html // cuerpo HTML
}
);
}
El truco está en el argumento htmlBody, que permite enviar un mensaje en HTML. Aquí es donde vamos a insertar nuestra tabla.
Paso 2: Crear una plantilla HTML dinámica
Para manejar HTML de manera más flexible y reutilizable, yo prefiero usar las plantillas de Apps Script. Esto permite insertar variables y generar contenido dinámico, como una tabla con datos que pueden cambiar.
// Crear el template desde un archivo HTML
var htmlTemplate = HtmlService.createTemplateFromFile('htmlTable');
// Pasar la variable tabla al template
htmlTemplate.tabla = [
["Nombre", "Apellido", "Apodo"],
["Juan", "Guzmán", "Wood"],
["Pedro", "Sánchez", "Juan"],
["María", "Guzmán", "Guz"]
];
// Evaluar el template y obtener el HTML como texto
var html = htmlTemplate.evaluate().getContent();
Recuerda que debes crear un archivo llamado htmlTable.html en tu proyecto de Apps Script. Allí es donde diseñarás la tabla con HTML y los datos dinámicos.
Paso 3: Código HTML de la plantilla para la tabla
El archivo htmlTable.html debe usar código HTML y scriptlets de Apps Script para recorrer la variable tabla y generar la tabla completa. Así lo hago yo:
<table border="1" cellpadding="4" cellspacing="0">
<thead>
<tr>
<? for (var col = 0; col < tabla[0].length; col++) { ?>
<th><?= tabla[0][col] ?></th>
<? } ?>
</tr>
</thead>
<tbody>
<? for (var row = 1; row < tabla.length; row++) { ?>
<tr>
<? for (var col = 0; col < tabla[0].length; col++) { ?>
<td><?= tabla[row][col] ?></td>
<? } ?>
</tr>
<? } ?>
</tbody>
</table>
Este código recorre automáticamente cualquier cantidad de filas y columnas, así que puedes usarlo para cualquier tabla sin importar su tamaño.
Paso 4: Extraer datos de Google Sheets para la tabla
Si quieres enviar datos reales desde una hoja de cálculo, puedes extraerlos así:
var hoja = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hoja1");
var datos = hoja.getDataRange().getDisplayValues();
htmlTemplate.tabla = datos;
Esto toma todos los datos de la hoja «Hoja1» y los pasa al template. Así, el correo enviará la tabla exactamente como la ves en Google Sheets, incluyendo formatos como monedas o fechas.
Ejemplo de tabla en Google Sheets
| Nombre | Apellido | Apodo |
|---|---|---|
| Juan | Guzmán | Wood |
| Pedro | Sánchez | Juan |
| María | Guzmán | Guz |
Este es el tipo de tabla que puedes enviar como HTML en tu correo, ya sea con datos fijos o extraídos dinámicamente de tu hoja de cálculo.
Conclusión y próximos pasos
Hemos visto cómo enviar correos con tablas HTML usando Google Apps Script, aprovechando plantillas y variables para automatizar reportes y cotizaciones. Este método es escalable y adaptable a cualquier tipo de datos que tengas en Google Sheets. Puedes mejorar el formato agregando CSS en el HTML, o incluso generar PDFs en otros tutoriales. Te invito a experimentar y adaptar este flujo a tus necesidades de negocio o emprendimiento.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.