Google Ads Scripts: Tutorial Gratis
¡Bienvenido al tutorial más completo de Google Ads Scripts en español! Este curso 100% gratuito te enseñará desde cero cómo automatizar y optimizar tus campañas de Google Ads usando JavaScript, sin necesidad de experiencia previa en programación.
Introducción al Tema
Google Ads Scripts es una plataforma poderosa que te permite automatizar tareas repetitivas en tus campañas publicitarias usando JavaScript. Con estos scripts puedes:
- Automatizar ajustes de pujas
- Pausar anuncios con bajo rendimiento
- Generar reportes personalizados
- Enviar alertas por email
- Optimizar presupuestos automáticamente
Esta herramienta es especialmente valiosa para quienes trabajan con arbitraje de tráfico, ya que permite escalar operaciones y optimizar campañas de manera eficiente las 24 horas del día.
¿Qué vas a aprender?
- Configurar y ejecutar tu primer Google Ads Script
- Automatizar tareas básicas de optimización
- Crear reportes automáticos con Google Sheets
- Implementar sistemas de alertas por email
- Desarrollar scripts para arbitraje de tráfico
- Programar ejecuciones automáticas
- Debugging y solución de errores
Requisitos Previos
Este curso está diseñado para principiantes. Solo necesitas:
- Cuenta activa de Google Ads
- Conocimientos básicos de Google Ads (campañas, grupos de anuncios, palabras clave)
- Acceso a Google Sheets
- Ganas de aprender (no se requiere experiencia en programación)
Contenido del Curso
Lección 1: Primeros Pasos con Google Ads Scripts
Accediendo a Google Ads Scripts:
- Inicia sesión en tu cuenta de Google Ads
- Ve a "Herramientas y configuración" > "Automatización" > "Scripts"
- Haz clic en el botón "+" para crear un nuevo script
Tu primer script:
function main() {
Logger.log("¡Hola mundo desde Google Ads Scripts!");
// Obtener información básica de la cuenta
var account = AdsApp.currentAccount();
Logger.log("Cuenta: " + account.getName());
Logger.log("ID de cuenta: " + account.getCustomerId());
}
Ejecutando el script:
- Pega el código en el editor
- Haz clic en "Vista previa" para probar
- Ve a "Logs" para ver el resultado
Lección 2: Conceptos Básicos de JavaScript para Scripts
Aunque no necesitas ser programador, entender estos conceptos básicos te ayudará:
Variables y tipos de datos:
function main() {
// Números
var ctr = 2.5;
var clicks = 100;
// Texto (strings)
var campaignName = "Mi Campaña de Arbitraje";
// Booleanos (verdadero/falso)
var isActive = true;
Logger.log("CTR: " + ctr + "%");
Logger.log("Campaña: " + campaignName);
}
Condicionales (if/else):
function main() {
var ctr = 1.5;
if (ctr < 2.0) {
Logger.log("CTR bajo, necesita optimización");
} else {
Logger.log("CTR aceptable");
}
}
Lección 3: Trabajando con Campañas
Listar todas las campañas:
function main() {
var campaignIterator = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
Logger.log("Campaña: " + campaign.getName());
Logger.log("Presupuesto: $" + campaign.getBudget().getAmount());
}
}
Script para pausar campañas con bajo rendimiento:
function main() {
var campaigns = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.forDateRange("YESTERDAY")
.get();
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var stats = campaign.getStatsFor("YESTERDAY");
if (stats.getClicks() > 50 && stats.getCtr() < 1.0) {
Logger.log("Pausando campaña: " + campaign.getName() +
" (CTR: " + stats.getCtr().toFixed(2) + "%)");
// campaign.pause(); // Descomenta para pausar realmente
}
}
}
Lección 4: Automatización de Pujas
Script para ajustar pujas automáticamente:
function main() {
var keywords = AdsApp.keywords()
.withCondition("Status = ENABLED")
.withCondition("CampaignStatus = ENABLED")
.forDateRange("LAST_7_DAYS")
.get();
while (keywords.hasNext()) {
var keyword = keywords.next();
var stats = keyword.getStatsFor("LAST_7_DAYS");
var currentBid = keyword.bidding().getCpc();
// Si el CTR es alto, aumentar puja en 10%
if (stats.getCtr() > 3.0 && stats.getClicks() > 20) {
var newBid = currentBid * 1.1;
keyword.bidding().setCpc(newBid);
Logger.log("Aumentando puja para: " + keyword.getText());
}
// Si el CTR es bajo, reducir puja en 15%
if (stats.getCtr() < 1.0 && stats.getClicks() > 10) {
var newBid = currentBid * 0.85;
keyword.bidding().setCpc(newBid);
Logger.log("Reduciendo puja para: " + keyword.getText());
}
}
}
Lección 5: Reportes Automáticos con Google Sheets
Crear un reporte diario en Google Sheets:
function main() {
// ID de tu Google Sheet (obténlo de la URL)
var SPREADSHEET_ID = "tu_spreadsheet_id_aqui";
var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
var sheet = spreadsheet.getActiveSheet();
// Limpiar datos anteriores
sheet.clear();
// Encabezados
sheet.getRange(1, 1, 1, 5).setValues([
["Campaña", "Clicks", "Impresiones", "CTR", "CPC"]
]);
var campaigns = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.forDateRange("YESTERDAY")
.get();
var row = 2;
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var stats = campaign.getStatsFor("YESTERDAY");
sheet.getRange(row, 1, 1, 5).setValues([[
campaign.getName(),
stats.getClicks(),
stats.getImpressions(),
(stats.getCtr() * 100).toFixed(2) + "%",
"$" + stats.getAverageCpc().toFixed(2)
]]);
row++;
}
Logger.log("Reporte actualizado en Google Sheets");
}
Lección 6: Sistema de Alertas por Email
Script para enviar alertas automáticas:
function main() {
var EMAIL = "tu_email@gmail.com";
var alertas = [];
// Verificar campañas sin impresiones
var campaigns = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.forDateRange("TODAY")
.get();
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var stats = campaign.getStatsFor("TODAY");
if (stats.getImpressions() == 0) {
alertas.push("⚠️ Campaña sin impresiones: " + campaign.getName());
}
// Verificar presupuesto agotado
if (campaign.getBudget().getAmount() < 10) {
alertas.push("💰 Presupuesto bajo: " + campaign.getName() +
" ($" + campaign.getBudget().getAmount() + ")");
}
}
// Enviar email si hay alertas
if (alertas.length > 0) {
var subject = "🚨 Alertas Google Ads - " + new Date().toLocaleDateString();
var body = "Se detectaron los siguientes problemas:\n\n" +
alertas.join("\n");
MailApp.sendEmail(EMAIL, subject, body);
Logger.log("Email de alerta enviado");
} else {
Logger.log("Todo funcionando correctamente");
}
}
Lección 7: Script Avanzado para Arbitraje de Tráfico
Optimizador automático para arbitraje:
function main() {
var PROFIT_MARGIN = 0.20; // 20% de margen mínimo
var campaigns = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.withCondition("LabelNames CONTAINS_ANY ['Arbitraje']")
.forDateRange("LAST_3_DAYS")
.get();
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var stats = campaign.getStatsFor("LAST_3_DAYS");
var cost = stats.getCost();
var conversions = stats.getConversions();
// Calcular ROI estimado
var revenue = conversions * 5; // Asumiendo $5 por conversión
var profit = revenue - cost;
var roi = cost > 0 ? profit / cost : 0;
Logger.log("Campaña: " + campaign.getName());
Logger.log("ROI: " + (roi * 100).toFixed(2) + "%");
if (roi < PROFIT_MARGIN && cost > 50) {
Logger.log("⚠️ ROI bajo, pausando campaña");
// campaign.pause(); // Descomenta para pausar
} else if (roi > 0.5 && conversions > 10) {
Logger.log("📈 Excelente ROI, aumentando presupuesto");
var currentBudget = campaign.getBudget().getAmount();
var newBudget = currentBudget * 1.2;
// campaign.getBudget().setAmount(newBudget);
}
}
}
Tips y Mejores Prácticas
- Siempre prueba primero: Usa Logger.log() para verificar antes de hacer cambios reales
- Comenta tu código: Usa // para explicar qué hace cada parte
- Usa rangos de fechas apropiados: YESTERDAY, LAST_7_DAYS, etc.
- Establece condiciones de seguridad: Evita cambios masivos accidentales
- Programa ejecuciones en horarios de bajo tráfico: Preferiblemente de madrugada
Errores Comunes a Evitar
- No probar scripts: Siempre usa "Vista previa" antes de programar
- Cambios muy agresivos: Ajusta pujas gradualmente (5-15%)
- Ignorar los logs: Revisa siempre la ejecución en "Historial"
- Scripts sin condiciones de parada: Establece límites de seguridad
- No considerar estacionalidad: Los datos de fin de semana pueden ser diferentes
Programación de Scripts
Para automatizar completamente tus scripts:
- En el editor de scripts, haz clic en "Crear programación"
- Elige la frecuencia (diaria, semanal, mensual)
- Selecciona la hora de ejecución
- Guarda la programación
Recursos Adicionales Gratuitos
Próximos Pasos
Una vez que domines estos conceptos básicos, puedes avanzar hacia:
- Scripts más complejos: Integración con APIs externas
- Machine Learning: Usar datos históricos para predicciones
- Automatización completa: Crear flujos de trabajo end-to-end
- Scaling: Gestionar múltiples cuentas con MCC Scripts
¡Felicitaciones! Has completado el tutorial básico de Google Ads Scripts. Ahora tienes las herramientas para automatizar tus campañas y llevar tu arbitraje de tráfico al siguiente nivel. Recuerda siempre probar tus scripts en un entorno seguro antes de implementarlos en campañas con presupuestos altos.
La automatización es clave en el arbitraje de tráfico moderno. Con estos scripts, puedes operar las 24 horas del día, optimizando continuamente mientras te enfocas en estrategias de mayor nivel. ¡Empieza con scripts simples y ve construyendo tu arsenal de automatización gradualmente!