Google Ad Script para administrar presupuestos de campaña
Publicado: 2021-10-23Hoy en día, como anunciantes que utilizan Google Ads, es una lucha universal administrar un presupuesto específico por campaña (s). Sus opciones en la interfaz de usuario son singulares: establezca una regla que excluya cada hora. Mi pregunta es ¿por qué? ¿No sería genial tener un guión para gestionar a nivel de campaña, a través de una hoja en 2019? Me tomó un tiempo, pero lo descubrí, que verá a continuación. La capacidad de administrar presupuestos en un solo script con una hoja en múltiples campañas.
Antes de continuar con la secuencia de comandos, si tiene reglas establecidas para no decir que no son excelentes para la administración del presupuesto, aquí hay un ejemplo de cómo crear una regla que tiene limitaciones de tiempo para pausar o habilitar sus campañas en función de un presupuesto para Campañas. Puede encontrar detalles adicionales aquí con reglas automatizadas .
- Inicie sesión en su cuenta de Google Ads.
- Vaya a las páginas Campañas , Grupos de anuncios o Palabras clave .
- Haga clic en el ícono de 3 puntos que se encuentra sobre la tabla de estadísticas.
- Seleccione Crear una regla automatizada .
- Seleccione Pausar o Habilitar en el menú desplegable "Tipo de regla".
- Elija qué tipo de campaña
- Para agregar una condición, haga clic en + AGREGAR , en "Condición".
- Defina la frecuencia de su regla que es Una vez, Diariamente, Semanalmente o Mensualmente .
- Elija el tipo de actualizaciones por correo electrónico que le gustaría recibir sobre los problemas que afectan su regla.
- Nombra tu regla.
- Haga clic en Vista previa para asegurarse de que ha configurado su regla para que se ejecute de la manera que desee. La vista previa es solo para verificación y no realiza cambios permanentes en su cuenta.
- Cuando haya terminado, haga clic en Guardar regla .
Hay beneficios en las reglas, en mi opinión por el bien del presupuesto, no tan valiosos. Así que eso nos deja con el pago de herramientas o con un desarrollador o ingeniero para crear algunos scripts sofisticados o una plataforma interna que funcione con la API de Google. ¿Qué pasa si no tengo acceso a esos recursos y todo lo que quiero hacer es ser un anunciante? No puedo, tengo que aprender cosas de codificación y API para incluir estar actualizado sobre todos los cambios y mejoras de la interfaz de usuario, que puede encontrar en la biblioteca de héroes de PPC.
Por qué estás leyendo y cómo funciona el guión.
Este script administra su presupuesto a nivel de campaña por horas a través de una hoja de Google, para que pueda escalar. Hasta donde yo sé y he buscado en la web, esta es la primera vez para el público. No escribí el guión original. Que se puede encontrar aquí por Google. Simplemente eliminé un montón de cosas con muchas pruebas y errores durante un período de 1 año y volví a trabajar algunas cosas para que administrara los presupuestos en lugar de las ofertas.
El guión le permite la flexibilidad de establecer sus presupuestos y olvidarse de ellos dentro de lo razonable. Si quiere volverse loco, puede hacer lo que yo hago y usar este script con el script de ritmo con algunas hojas personalizadas de Google para que tenga su propia herramienta de gestión de presupuesto y postor. Pensé que si alguien podía construir una herramienta para hacer estas cosas y ganar millones de dólares, tenía que haber una forma gratuita de hacerlo.
Estoy seguro, casi seguro de que hay una mejor manera de escribir este script y más que seguro de que hay una manera de hacerlo a nivel de MCC para administrar varias cuentas. No me he dado cuenta de eso. Sería genial para aquellos que ven esto que son desarrolladores o ingenieros, realizar ajustes en este script y compartir una versión gratuita a nivel de MCC con sus propias mejoras.
Cómo configurar el guión
Antes de ejecutar el script, aquí hay algunas cosas que debe cambiar.
- Crea una nueva hoja de Google. Aquí es donde el script sabrá qué campañas Pausar o Reanudar, una vez que haya creado una nueva hoja, copie la URL.
- Asegúrese de que el nombre de la pestaña esté configurado como "Reglas"; de lo contrario, asegúrese de actualizar esta línea donde "Las reglas se cambian por el nombre de su pestaña: var spreadsheetAccess = new SpreadsheetAccess (SPREADSHEET_URL," Rules ")
- Aún trabajando en Google Sheets, actualice la Fila 2 con su número de cuenta "000-000-0000" y reemplácelo con el suyo.
- La fila 3 es la referencia del período de tiempo para que se ejecute su script, si desea ejecutarlo después de 7 días, 1 semana o un mes. Consulte la siguiente tabla para obtener entradas válidas para esta fila en lo que respecta a su objetivo de controlar sus presupuestos.
- Comenzando en la fila 6, columna C, querrá agregar sus presupuestos para ese período
- Por último, en la fila 6, columna D, querrá enumerar sus campañas.
Espero que esto les ayude a todos a controlar mejor sus presupuestos. Casi lo olvido, puede cambiar la campaña.pausa en el script a campaign.enable y ajustar la fórmula simple si desea duplicar el script y crear otro script para habilitar campañas.
Texto
var SPREADSHEET_URL = "[https://docs.google.com/spreadsheets/d/1AbldNxsSPHkE0WcOY01AoM7EimF2_7XDrvI5FeLcarY/edit#gid=0]"; var spreadsheetAccess = new SpreadsheetAccess(SPREADSHEET_URL, "Rules"); var totalColumns; function main() { var columns = spreadsheetAccess.sheet.getRange(5, 2, 5, 100).getValues()[0]; for (var i = 0; i < columns.length; i ++) { if (columns[i].length == 0 || columns[i] == 'Results') { totalColumns = i; break; } } if (columns[totalColumns] != 'Results') { spreadsheetAccess.sheet.getRange(5, totalColumns + 2, 1, 1).setValue("Results"); } // clear the results column spreadsheetAccess.sheet.getRange(6, totalColumns + 2, 1000, 1).clear(); var row = spreadsheetAccess.nextRow(); while (row != null) { var budget; try { budget = parseBudget(row); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var selector = AdWordsApp.campaigns(); for (var i = 2; i < totalColumns; i ++) { var header = columns[i]; var value = row[i]; if (!isNaN(parseFloat(value)) || value.length > 0) { if (header.indexOf("'") > 0) { value = value.replace(/\'/g,"\\'"); } else if (header.indexOf("\"") > 0) { value = value.replace(/"/g,"\\\""); } var condition = header.replace('?', value); selector.withCondition(condition); } } var campaigns = selector.get(); try { campaigns.hasNext(); } catch (ex) { logError(ex); row = spreadsheetAccess.nextRow(); continue; } var fetched = 0; var changed = 0; while (campaigns.hasNext()) { var campaign = campaigns.next(); var oldCost = campaign.getStatsFor("THIS_MONTH").getCost(); var action = row[0]; var newStatus; fetched ++; if (budget <= oldCost) { campaign.pause(); changed++ } } logResult("Fetched " + fetched + "\nChanged " + changed); row = spreadsheetAccess.nextRow(); } var now = new Date(Utilities.formatDate(new Date(), AdWordsApp.currentAccount().getTimeZone(), "MMM dd,yyyy HH:mm:ss")); } function parseBudget(row) { if (row[1].length == 0) { return null; } var limit = parseFloat(row[1]); if (isNaN(limit)) { throw "Bad Argument: must be a number."; } return limit; } function logError(error) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(error) .setFontColor('#c00') .setFontSize(8) .setFontWeight('bold'); } function logResult(result) { spreadsheetAccess.sheet.getRange(spreadsheetAccess.currentRow(), totalColumns + 2, 1, 1) .setValue(result) .setFontColor('#444') .setFontSize(8) .setFontWeight('normal'); } function SpreadsheetAccess(spreadsheetUrl, sheetName) { this.spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl); this.sheet = this.spreadsheet.getSheetByName(sheetName); this.cells = this.sheet.getRange(6, 2, this.sheet.getMaxRows(), this.sheet.getMaxColumns()).getValues(); this.rowIndex = 0; this.nextRow = function() { for (; this.rowIndex < this.cells.length; this.rowIndex ++) { if (this.cells[this.rowIndex][0]) { return this.cells[this.rowIndex++]; } } return null; } this.currentRow = function() { return this.rowIndex + 5; } }