Script de anúncio do Google para gerenciar orçamentos de campanha

Publicados: 2021-10-23

Hoje, como anunciantes que utilizam o Google Ads, é uma luta universal gerenciar um orçamento específico por campanha (s). Suas opções na IU são únicas: defina uma regra que exclua por hora. Minha pergunta é por quê? Não seria ótimo ter um script para gerenciar no nível da campanha, por meio de uma planilha em 2019? Demorou um pouco, mas descobri, que você verá a seguir. A capacidade de gerenciar orçamentos em um único script com uma planilha em várias campanhas.

Antes de continuarmos no roteiro, se você tiver regras definidas para não dizer que não são ótimas para gerenciamento de orçamento, aqui está um exemplo de como criar uma regra que tem limitações de tempo para pausar ou habilitar suas campanhas com base em um orçamento para campanhas. Você pode encontrar detalhes adicionais aqui com regras automatizadas .

  1. Faça login em sua conta do Google Ads.
  2. Vá para as páginas Campanhas , Grupos de anúncios ou Palavras-chave .
  3. Clique no ícone de 3 pontos acima da tabela de estatísticas.
  4. Selecione Criar uma regra automatizada .
  5. Selecione Pausar ou Ativar no menu suspenso “Tipo de regra”.
  6. Escolha qual tipo de campanha
  7. Para adicionar uma condição, clique em + ADICIONAR , em “Condição”.
  8. Defina a frequência de sua regra, que é Uma vez, Diariamente, Semanalmente ou Mensalmente .
  9. Escolha o tipo de atualizações por e-mail que deseja receber sobre problemas que afetam sua regra.
  10. Dê um nome à sua regra.
  11. Clique em Visualizar para garantir que você configurou sua regra para ser executada da maneira que deseja. A visualização é apenas para verificação e não faz alterações permanentes em sua conta.
  12. Quando terminar, clique em Salvar regra .

As regras trazem benefícios, na minha opinião, por uma questão de orçamento, não tão valiosas. Então, isso nos deixa com o pagamento das ferramentas e ou com um desenvolvedor ou engenheiro para construir alguns scripts sofisticados ou uma plataforma interna que funcione com a API do Google. E se eu não tiver acesso a esses recursos e tudo o que quiser fazer for um anunciante? Não posso, tenho que aprender coisas de codificação e API para incluir me manter atualizado sobre todas as mudanças e aprimoramentos da IU, que você pode encontrar na Biblioteca PPC Hero.

Por que você está lendo e como o script funciona.

Este script gerencia seu orçamento no nível da campanha por hora por meio de uma planilha do google, para que você possa escalar. Que eu saiba e já vasculhei a web, esta é a primeira para o público. Não escrevi o roteiro original. Que pode ser encontrado aqui pelo Google. Eu simplesmente apaguei um monte de coisas com muitas tentativas e erros ao longo de um período de 1 ano e refiz algumas coisas para fazer com que gerenciem orçamentos em vez de lances.

O script permite a flexibilidade de definir seus orçamentos e esquecê-los dentro do razoável. Se você quiser ficar louco, você pode fazer o que eu faço e usar este script com o script de ritmo com algumas planilhas personalizadas do Google para que você tenha sua própria ferramenta de gerenciamento de orçamento e licitador. Achei que se alguém pudesse construir uma ferramenta para fazer essas coisas e ganhar milhões de dólares, deveria haver uma maneira gratuita de fazer isso.

Tenho certeza, quase certeza de que existe uma maneira melhor de escrever este script e mais do que certo de que existe uma maneira de fazer isso no nível da MCC para gerenciar várias contas. Eu não descobri isso. Seria ótimo para aqueles que são desenvolvedores e / ou engenheiros que veem isso, fazer ajustes neste script e compartilhar uma versão gratuita no nível da MCC com seus próprios aprimoramentos.

Como configurar o script

Antes de executar o script, aqui estão algumas coisas que você precisa alterar.

  1. Faça uma nova planilha do Google. É aqui que o script saberá quais campanhas pausar ou cancelar, uma vez que você tenha criado uma nova planilha, copie o URL.
  2. Certifique-se de que o nome da guia esteja definido como “Regras”; caso contrário, certifique-se de atualizar esta linha onde “Regras são alteradas para qualquer que seja o nome da guia: var spreadsheetAccess = new SpreadsheetAccess (SPREADSHEET_URL,“ Regras “)
  3. Ainda trabalhando no Planilhas Google, atualize a Linha 2 com o número da sua conta “000-000-0000” e substitua pelo seu.
  4. A linha 3 é a referência do período de tempo para o seu script ser executado, se você deseja executar após 7 dias, 1 semana ou um mês. Consulte a tabela abaixo para obter entradas válidas para esta linha, uma vez que se relaciona com sua meta com o controle de seus orçamentos.
Opções de cronograma do script de anúncios do Google
  • Começando na linha 6, coluna C, você desejará adicionar seus orçamentos para esse período
  • Por último, na linha 6, coluna D, você desejará listar suas campanhas.

Espero que isso ajude todos vocês a controlar melhor seus orçamentos. Quase esquecido, você pode alterar o campaign.pause no script para campaign.enable e ajustar a fórmula simples se quiser duplicar o script e criar outro script para ativar as campanhas.

Roteiro

 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; } }