Cómo enviar correos con tablas HTML desde Google Apps Script

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

NombreApellidoApodo
JuanGuzmánWood
PedroSánchezJuan
MaríaGuzmánGuz

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.