Enviar Mensajes Masivos de WhatsApp Usando la API de WhatsApp Business y Google Sheets¶
Este artículo explica cómo usar la API de WhatsApp Business y Google Apps Script para enviar mensajes masivos a contactos programados en una hoja de cálculo de Google Sheets.
¿Qué Aprenderás?¶
- Configurar la API de WhatsApp Business.
- Crear un archivo de Google Sheets para gestionar contactos, mensajes y fechas.
- Usar Google Apps Script para automatizar el envío de mensajes programados.
Requisitos Previos¶
- Cuenta de WhatsApp Business API: Debes tener acceso al número de teléfono y token proporcionados por WhatsApp Business API.
- Google Sheets: Crea una hoja de cálculo que incluya los contactos, mensajes y fechas programadas.
- Conocimientos básicos de JavaScript y Google Apps Script.
Paso 1: Crear la Hoja de Cálculo¶
Crea un archivo en Google Sheets con las siguientes columnas:
Nombre | Número de Teléfono | Mensaje | Fecha y Hora | Estado |
---|---|---|---|---|
Emanuel | +1234567890 | ¡Hola, Matias! Te enviamos un saludo. | 2024-12-20 10:00:00 | Pendiente |
Emanuel | +1987654321 | ¡Hola, Emanuel! Tu pedido está listo. | 2024-12-20 11:00:00 | Pendiente |
- Número de Teléfono: En formato internacional (+código de país).
- Mensaje: El mensaje personalizado para cada contacto.
- Fecha y Hora: Indica cuándo enviar el mensaje.
- Estado: Automáticamente se actualizará con "Enviado" o un mensaje de error.
Paso 2: Configurar el Script en Google Apps Script¶
- Abre tu archivo de Google Sheets.
- Ve a Extensiones > Apps Script.
- Copia y pega el siguiente código en el editor de Apps Script:
// === ENVIO DE MENSAJES AUTOMATIZADO - MATIAS ORELLANA ===
// === Configuración Global ===
const WHATSAPP_API_URL = "https://graph.facebook.com/v15.0/YOUR_PHONE_NUMBER_ID/messages"; // Número de teléfono
const WHATSAPP_TOKEN = "YOUR_ACCESS_TOKEN"; // Token de WhatsApp Business
const ID_ARCHIVO = "YOUR_SPREADSHEET_ID"; // ID del archivo de Google Sheets
const NOMBRE_HOJA = "Contactos"; // Nombre de la hoja en el archivo
/**
* Validar configuración inicial
*/
function validarConfiguracion() {
if (!WHATSAPP_API_URL || WHATSAPP_API_URL.includes("YOUR_PHONE_NUMBER_ID")) {
throw new Error("No se ha configurado correctamente el número de teléfono en WHATSAPP_API_URL.");
}
if (!WHATSAPP_TOKEN || WHATSAPP_TOKEN === "YOUR_ACCESS_TOKEN") {
throw new Error("No se ha configurado correctamente el token en WHATSAPP_TOKEN.");
}
if (!ID_ARCHIVO || ID_ARCHIVO === "YOUR_SPREADSHEET_ID") {
throw new Error("No se ha configurado correctamente el ID del archivo en ID_ARCHIVO.");
}
const archivo = SpreadsheetApp.openById(ID_ARCHIVO);
const hoja = archivo.getSheetByName(NOMBRE_HOJA);
if (!hoja) {
throw new Error(`La hoja con el nombre '${NOMBRE_HOJA}' no existe en el archivo que especificaste.`);
}
return hoja;
}
// === Funciones Principales ===
/**
* Función principal: Enviar mensajes programados
*/
function enviarMensajesProgramados() {
try {
// Validar configuraciones y obtener la hoja
const hoja = validarConfiguracion();
const datos = hoja.getDataRange().getValues();
// Iterar sobre los contactos
for (let i = 1; i < datos.length; i++) { // Saltar la primera fila (encabezados)
const [nombre, numero, mensaje, fechaHora] = datos[i];
const ahora = new Date();
// Verificar si la fecha y hora ya pasó
if (new Date(fechaHora) <= ahora) {
const estado = enviarMensajeWhatsApp(numero, mensaje);
// Registrar el estado en la hoja
hoja.getRange(i + 1, 5).setValue(estado); // Columna "E" para el estado
}
}
} catch (e) {
Logger.log(`Error: ${e.message}`);
}
}
/**
* Función para enviar mensajes
*/
function enviarMensajeWhatsApp(numero, mensaje) {
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: `Bearer ${WHATSAPP_TOKEN}`
},
payload: JSON.stringify({
messaging_product: "whatsapp",
to: numero,
type: "text",
text: { body: mensaje }
})
};
try {
const response = UrlFetchApp.fetch(WHATSAPP_API_URL, options);
if (response.getResponseCode() === 200) {
return "Enviado";
} else {
return `Error: ${response.getContentText()}`;
}
} catch (e) {
return `Error: ${e.message}`;
}
}
/**
* Configurar un trigger para ejecutar automáticamente
*/
function configurarTrigger() {
ScriptApp.newTrigger("enviarMensajesProgramados")
.timeBased()
.everyMinutes(5) // Ejecutar cada 5 minutos
.create();
}
Paso 3: Configurar el Script¶
Personaliza las constantes:
YOUR_PHONE_NUMBER_ID
: Reemplaza con el número de teléfono de WhatsApp Business.
YOUR_ACCESS_TOKEN
: Ingresa tu token de acceso.
YOUR_SPREADSHEET_ID
: Reemplaza con el ID del archivo de Google Sheets.
Contactos
: Cambia si tu hoja tiene otro nombre.
Guarda el proyecto con un nombre descriptivo, como MensajesWhatsApp.
Paso 4: Crear un Trigger¶
Ve a Extensiones > Apps Script > Triggers. Crea un nuevo trigger para la función enviarMensajesProgramados y configúralo para que se ejecute cada 5 minutos.
Advertencias¶
Asegúrate de tener permisos en la API de WhatsApp Business para enviar mensajes. Los mensajes enviados deben cumplir con las políticas de WhatsApp para evitar bloqueos.