En este artículo vemos como enviar un correo a cualquiera de nuestros contactos en una base de Google Sheets con un botón.
Aquí pueden ver el video de este tutorial:
Ya vimos como enviar un correo sencillo desde Sheets y también como usar una plantilla y variables de nuestra tabla.
Ahora vamos a llevarlo un paso más allá y volverlo más práctico, incluyendo un menú especial, para que podamos seleccionar cualquiera de nuestros contactos y enviar un correo a ese contacto.
Para esto necesitamos:
- Una base de contactos donde una columna sea el correo electrónico, y el resto son variables que vamos a usar para construir nuestro email
- Una plantilla que contenga las variables
- Un menú especial con la opción de enviar mail
- El código que envíe el mail
Vamos uno por uno:
Base de contactos
Lo importante de esta base es que tenga entre sus campos:
- Correo electrónico
- (Opcional) Variables para poder personalizar nuestro correo. Ejemplo de estas variables pueden ser:
- Nombre
- Apellido
- Edad
- Producto Comprado
- Dirección
Para nuestro ejemplo, esta es la base:

Plantilla
La plantilla podría hacerse de distintas maneras, entre otras:
- Directamente en el código
- En una celda de Sheets
- En un documento de texto de Google Docs
Para esta ocasión lo vamos a hacer desde una celda de nuestro Sheets.
En nuestro ejemplo creamos una pestaña llamada «Plantilla» y en la celda A3, depositaremos nuestra plantilla

Importante ver los nombres de las variables que vamos a modificar desde nuestro código, con los datos del contacto en cuestión.
Menú
Vamos a crear un menú personalizado para poder enviar nuestro mail con una opción fácil de acceder.
function onOpen() {
crearMenu();
}
function crearMenu(){
const miMenu = SpreadsheetApp.getUi().createMenu("Acciones");
miMenu.addItem("Enviar Mail a contacto actual 📧", "enviarMailActual").addToUi()
}
Aquí pueden ver todo acerca de crear menus personalizados
Código
El código lo vamos a dividir en cuatro partes:
- Variables de configuración
- Identificar la celda en la que usuario está al momento de presionar el botón
- Inserta los valores de cada variable en la plantilla.
- Si no hay correo electrónico en la fila, sale una alerta
- Si está en una fila con correo electrónico, envía el correo.
- Pone un OK en la última casilla y muestra un mensaje de éxito
Vamos uno por uno:
Variables de Configuración
Necesitamos saber:
- Como se llama la base donde están mis contactos (nombreBase).
- Cuantas filas de encabezado hay (filaEncabezado).
- En que columna está el correo (colCorreo).
- En que columna están las demás variables (colNombre, colProd, colFecha, colValor, colTipo).
- En que columna vamos a poner la confirmación de que el correo se envió (colConfirmación).
- Cuál va a ser el texto del asunto, si no es variable (asunto).
- El texto de mensaje de alerta cuando no hay un correo electrónico.
- El texto de mensaje de confirmación cuando haya un envío exitoso.
// Variables de configuracion
const nombreBase = "BD"
const filaEncabezado = 1
const colCorreo = 1;
const colNombre = 2;
const colProd = 3;
const colFecha = 4;
const colValor = 5;
const colTipo = 6;
const colConfirmacion = 7;
const asunto = "Confirmacion compra curso en JuanSGuzman";
const mensajeAlerta = "No hay un correo válido. El mail no pudo ser enviado";
const mensajeExito = "Su correo fue enviado exitosamente";
Identificar la celda
const archivo = SpreadsheetApp.getActiveSpreadsheet();
var activa = hoja.getActiveCell();
var filaActiva = activa.getRow();
Guardar las variables
var correo = hoja.getRange(filaActiva,colCorreo).getValue();
var nombre = hoja.getRange(filaActiva,colNombre).getValue();
var prod = hoja.getRange(filaActiva,colProd).getValue();
var fecha = hoja.getRange(filaActiva,colFecha).getValue();
var valor = hoja.getRange(filaActiva,colValor).getValue();
var tipo = hoja.getRange(filaActiva,colTipo).getValue();
Reemplazar los valores de las variables en la plantilla
var mensaje = plantilla
.replace("{{correo}}",correo)
.replace("{{nombre}}",nombre)
.replace("{{producto}}",prod)
.replace("{{fecha}}",fecha)
.replace("{{valor}}",valor)
.replace("{{tipo}}",tipo);
Si no hay valor en la celda del correo electrónico muestra un mensaje de error:
if(correo==""){
SpreadsheetApp.getUi().alert(mensajeAlerta)
}
De lo contrario, enviar el email
else{
GmailApp.sendEmail(correo, asunto, mensaje);
hoja.getRange(filaActiva,colConfirmacion).setValue("OK");
SpreadsheetApp.getUi().alert(mensajeExito)
}
Código completo
function enviarMailActual(){
// Variables de configuracion
const nombreBase = "BD"
const filaEncabezado = 1
const colCorreo = 1;
const colNombre = 2;
const colProd = 3;
const colFecha = 4;
const colValor = 5;
const colTipo = 6;
const colConfirmacion = 7;
const asunto = "Confirmacion compra curso en JuanSGuzman";
const mensajeAlerta = "No hay un correo válido. El mail no pudo ser enviado";
const mensajeExito = "Su correo fue enviado exitosamente";
const archivo = SpreadsheetApp.getActiveSpreadsheet();
var hoja = archivo.getActiveSheet();
var plantilla = archivo.getSheetByName("Plantilla").getRange(3, 1).getValue()
if(hoja.getName()==nombreBase){
var activa = hoja.getActiveCell();
var filaActiva = activa.getRow();
if(filaActiva>filaEncabezado){
var correo = hoja.getRange(filaActiva,colCorreo).getValue();
var nombre = hoja.getRange(filaActiva,colNombre).getValue();
var prod = hoja.getRange(filaActiva,colProd).getValue();
var fecha = hoja.getRange(filaActiva,colFecha).getValue();
var valor = hoja.getRange(filaActiva,colValor).getValue();
var tipo = hoja.getRange(filaActiva,colTipo).getValue();
var mensaje = plantilla.replace("{{correo}}",correo)
.replace("{{nombre}}",nombre)
.replace("{{producto}}",prod)
.replace("{{fecha}}",fecha)
.replace("{{valor}}",valor)
.replace("{{tipo}}",tipo)
Logger.log(correo)
if(correo==""){
SpreadsheetApp.getUi().alert(mensajeAlerta)
}else{
GmailApp.sendEmail(correo, asunto, mensaje);
hoja.getRange(filaActiva,colConfirmacion).setValue("OK");
SpreadsheetApp.getUi().alert(mensajeExito)
}
}
}
}
Conclusión
Como ven, cada vez podemos hacer más cosas aparte de simplemente enviar un correo.
En esta ocasión armamos un correo con variables y creamos un menú para poder enviar inmediatamente un correo a alguno de nuestros contactos.
Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script
Deja una respuesta