Accede a la lección en vídeo de la membresía. Cada martes, jueves y sábado aprende con una clase nueva. Puedes identificarte en este enlace o suscribirte a los cursos.
Contenido de la clase
(Recordar que este contenido es la escaleta del vídeo)
Manejo de errores con try/catch:
try {
// Código que puede fallar
} catch (e) {
Logger.log(«Error detectado: » + e);
}
- Uso de Logger.log():
Fundamental para revisar qué está haciendo el script paso a paso. - try { … }:
El bloque try contiene el código que puede generar un error. En este caso, se pone el código que se espera pueda fallar, para que no se detenga el programa si ocurre un problema.
- catch (e) { … }:
- Si se produce un error dentro del bloque try, el control se transfiere al bloque catch.
- El catch recibe un parámetro e, que representa el error que ocurrió. e puede ser cualquier objeto de error que se genera cuando algo va mal en el bloque try.
Logger.log(«Error detectado: » + e);:
- Dentro del bloque catch, se usa la función Logger.log() para registrar el error que ocurrió.
- e contiene el error que ocurrió, y el mensaje de error se muestra en el log con el texto «Error detectado: [mensaje del error]».
Límites y recomendaciones:
- Google Ads Scripts, hay límites automáticos definidos por Google (como el tiempo máximo de ejecución o el número de operaciones permitidas), pero tú no puedes cambiarlos directamente. Sin embargo, sí puedes manejar esos límites para evitar errores o caídas a mitad del proceso, con buenas prácticas.
Límite | Valor |
Tiempo máximo de ejecución | 30 minutos |
Máximo de operaciones | 50.000 llamadas |
1. ⏰ Controlar el tiempo de ejecución
Puedes registrar el tiempo al inicio y parar el script antes de llegar al límite:
var startTime = new Date();
Ejemplo:
var startTime = new Date();
function main() {
var campaignIterator = AdsApp.campaigns().get();
while (campaignIterator.hasNext()) {
var now = new Date();
var elapsedSeconds = (now – startTime) / 1000;
if (elapsedSeconds > 1700) { // Cortamos antes de los 1800 segundos
Logger.log(«⏱ Tiempo límite alcanzado. Saliendo del script.»);
break;
}
var campaign = campaignIterator.next();
// Tu lógica aquí…
}
}
2. 📊 Controlar el número de operaciones
Puedes usar un contador:
var operationCount = 0;
var MAX_OPERATIONS = 49000; // Un poco menos del límite
function main() {
var campaignIterator = AdsApp.campaigns().get();
while (campaignIterator.hasNext()) {
if (operationCount >= MAX_OPERATIONS) {
Logger.log(«⚠️ Límite de operaciones alcanzado.»);
break;
}
var campaign = campaignIterator.next();
campaign.pause(); // Esta es una operación
operationCount++;
}
}
- Recomendaciones de seguridad:
- Testea siempre en una cuenta de prueba.
- Usa etiquetas para filtrar solo las campañas que quieres afectar.
🟠 Script de Test: Manejo de Errores y Buenas Prácticas en Google Ads
function main() {
Logger.log(«🚀 Inicio del script de prueba de errores»);
try {
Logger.log(«🔎 Buscando campañas activas…»);
// Simulamos obtener las campañas activas
var campaigns = AdsApp.campaigns()
.withCondition(«Status = ‘ENABLED'»)
.get();
if (!campaigns.hasNext()) {
Logger.log(«⚠️ No hay campañas activas.»);
return; // Sale del script si no hay campañas
}
Logger.log(«✅ Campañas activas encontradas, comenzando revisión…»);
// Recorremos las campañas activas
while (campaigns.hasNext()) {
var campaign = campaigns.next();
var campaignName = campaign.getName();
Logger.log(«🔧 Revisando campaña: » + campaignName);
// 🟥 Simulamos un posible error:
// Si la campaña se llama «Error Test», forzamos un fallo para probar el catch:
if (campaignName === «Error Test») {
throw «Simulando error en la campaña: » + campaignName;
}
// Aquí podrías poner más lógica si quisieras (pausar, cambiar presupuesto, etc.)
}
Logger.log(«✅ Revisión de campañas completada sin errores.»);
} catch (e) {
Logger.log(«❌ Error detectado: » + e);
}
Logger.log(«🏁 Fin del script de prueba.»);
}
📌 ¿Cómo funciona este script?
- Empieza mostrando mensajes con Logger.log() para seguir el flujo del script.
- Usa try { … } catch (e) { … } para atrapar cualquier error que ocurra.
- Simula un error si encuentra una campaña con el nombre «Error Test» para probar que el manejo de errores funciona.
- Si ocurre un error, lo escribe claramente en el log: ❌ Error detectado: ….
- Si no hay campañas activas, también lo informa y sale del script de forma segura.
🟢 ¿Cómo probarlo sin riesgos?
- Crea una campaña en tu cuenta de prueba que se llame «Error Test».
- Lanza el script con la opción de «Vista previa» (sin ejecutarlo de verdad).
- Observa cómo el error es capturado y reportado en el log.
🔒 Buenas prácticas incluidas en este script:
Práctica | ¿Por qué es importante? |
try/catch | Evita que el script se bloquee por errores |
Logger.log() paso a paso | Te ayuda a entender en qué punto falla |
Salida anticipada (return) | No ejecuta acciones si no hay campañas |
Simulación controlada de error | Permite probar el manejo de errores sin riesgos |
Objetivo de la clase
Evitar errores graves y aprender a depurar los scripts.
📌 Ejercicio:
🟢 Dividir dos números y manejar el error de división por cero
- Objetivo: Vamos a crear un script que intente dividir dos números. Si ocurre un error (por ejemplo, si tratamos de dividir entre cero), se manejará el error usando try/catch y se registrará el error con Logger.log().
- Deberás usar la function dividirNumeros () {
- Te pego el inicio de código y desarrolla el try { solo tienes que cambiar las xxxxxxxxxxx
function dividirNumeros() {
var numerador = 10; // Número a dividir
var divisor = 0; // Intentamos dividir por cero
try {
// Intentamos realizar la división
var resultado = xxxxxxxxxxx / xxxxxxxxxxx;
// Si el divisor es 0, lanzamos un error
if (divisor === xxxxxxxxxxx) {
throw new Error(«No se puede dividir entre cero.»);
}
Logger.log(«Resultado de la división: » + resultado);
} catch (e) {
// Si ocurre un error, mostramos el mensaje de error
Logger.log(«Error detectado: » + e.message);
}
}
✅SOLUCIÓN
function dividirNumeros() {
var numerador = 10; // Número a dividir
var divisor = 0; // Intentamos dividir por cero
try {
// Intentamos realizar la división
var resultado = numerador / divisor;
// Si el divisor es 0, lanzamos un error
if (divisor === 0) {
throw new Error(«No se puede dividir entre cero.»);
}
Logger.log(«Resultado de la división: » + resultado);
} catch (e) {
// Si ocurre un error, mostramos el mensaje de error
Logger.log(«Error detectado: » + e.message);
}
}
Explicación:
- Bloque try:
- Se intenta realizar la división de numerador entre divisor.
- Si el divisor es 0, lanzamos un error con throw new Error().
- Se intenta realizar la división de numerador entre divisor.
- Bloque catch:
- Si ocurre un error (en este caso, la división por cero), el mensaje de error se captura y se muestra en los registros con Logger.log().
- Si ocurre un error (en este caso, la división por cero), el mensaje de error se captura y se muestra en los registros con Logger.log().
¿Qué verás en los registros?
Como estamos dividiendo entre cero, el mensaje que aparecerá será:
Error detectado: No se puede dividir entre cero.
¿Quieres comentar este post?
Regístrate gratis o inicia sesión para poder comentar
Iniciar Sesión
Registrarse
Restablecer Contraseña