Scripts do Google Ads (Adwords Script) - Acessando Níveis da Conta e Solucionando Problemas

Scripts do Google Ads (Adwords Script) - Acessando Níveis da Conta e Solucionando Problemas

Por Danilo Mazuquin

especialista em Midias de Busca

Publicado em 13 de Julho de 2019 ás 14:55 | Atualizado em 22 de Julho de 2019 ás 00:00

Na última postagem sobre Scripts do Google Ads (Adwords Script), você aprendeu a visualizar as palavras chave, inserir condições dentro de uma instrução e também a criar scripts para tomada de decisão em massa. Caso você ainda não tenha lido, recomendo que antes de continuar nesta postagem, leia primeiro Scripts do Google Ads (Adwords Script) - Conceituando e Criando Instruções Básicas.

Vamos acessar níveis da conta no Google Ads através de scripts. Saber acessar todos os níveis é fundamental para que possamos otimizar a performance de nossa conta sem restrição de nível.

Acessando Informações a Nível da Conta:

Usamos a classe AdsApp.currentAccount(), através desta classe será possível saber o nome da conta, adicionar e remover extensões de anúncios, dentre outras opções. Abaixo criei o script para que tenhamos acesso no nível de conta e exibi o nome da mesma, confira:

  1. function main() {
  2. var conta = AdsApp.currentAccount();
  3. Logger.log(conta.getName());
  4. }

Na linha 2 criamos a variável conta, esta nos permitirá acessar os objetos dentro da AdsApp.currentAcoount(). Após rodar este script, o nome da conta aparece no compilador, veja:

Acessando Nível de Campanha:

Para acessarmos o nível de campanha utilizaremos a classe AdsApp.campaigns(), vejamos abaixo como fica o script para acessarmos uma campanha e exibirmos o nome dela no compilador.

  1. function main() {
  2. var campanha = AdsApp.campaigns()
  3. .get();
  4. Logger.log(campanha.next().getName());
  5. }

Na linha 2 estamos de fato acessando nossa campanha, assim como em exemplos anteriores já mencionados, criamos uma variável, o nome da variável é campanha e esta variável esta armazenando a classe, a fim de que posteriormente possamos utilizar objetos existentes dentro desta classe. Abaixo mostro o resultado que foi exibido no compilador:

Acessando Nível de Grupo de Anúncios:

Para acessar o nível de grupo de anúncios é necessário utilizar a classe AdsApp.adGroups(), vejamos abaixo o script para acessar o nível de grupo de anúncios e exibir o nome do mesmo.

  1. function main() {
  2. var grupo_anuncio = AdsApp.adGroups()
  3. .get();
  4. Logger.log(grupo_anuncio.next().getName());
  5. }

Na linha 2 do script acima nós criamos uma variável chamada grupo_anuncio, que nos possiblitará posteriormente acessar os objetos dentro da classe AdsApp.adGroups(). Abaixo podemos visualizar na imagem o resultado no compilador:

Acessando Nível de Palavra Chave:

Já utilizamos o nível de palavra chave em postagens anteriores, contudo vale ressaltar novamente como faremos para acessa-la. O acesso as palavras chave serão através da classe AdsApp.keywords(), abaixo ilustro um script que faz acesso no nível de palavra chave e também mostra uma palavra chave.

  1. function main() {
  2. var keywords = AdsApp.keywords().get();
  3. var palavra_chave = keywords.next();
  4. Logger.log(palavra_chave.getText());
  5. }

Assim como nos scripts citados mais acima, na linha 2 é onde ocorre o acesso a classe AdsApp.keywords() e desta forma então poderá utilizar seus objetos, veja o resultado do compilador abaixo:

Acessando Nível de Anúncio:

Para acessarmos o nível de anúncio, utilizaremos a classe Ads(), vejamos abaixo o script que exibe as informações de um anúncio.

  1. function main() {
  2. var anuncio = AdsApp.ads()
  3. .get();
  4. var manipula_anuncio = anuncio.next();
  5. var titulo = manipula_anuncio.getHeadline();
  6. var descricao = manipula_anuncio.getDescription1();
  7. var descricao2 = manipula_anuncio.getDescription2();
  8. Logger.log(titulo + " " + descricao + " " + descricao2);}

No script acima, na linha 2 fazemos o acesso a classe ads() e nas linhas 5, 6 e 7 armazenamos informações de título e descrição do anúncio nas suas respectivas variáveis. Já na linha 8, exibimos o anúncio, veja como aparecerá em nosso compilador:

Acima aprendemos como acessar os diferentes níveis do Google Ads, através dos scripts do Google Ads, agora iremos solucionar problemas decorrentes do cotidiano de uma gestão. Vamos lá?

Solucionando Problemas:

1º Se hoje a campanha estiver com uma taxa de conversão acima de 10%, então aumentar em 20% o orçamento da campanha.

Para que nós possamos sanar este problema, teremos que entender inicialmente em qual nível devemos trabalhar. No problema citado acima, a necessidade é de aumentar em 20% o orçamento da campanha se uma condição for satisfeita, desta forma, sabemos então que nosso trabalho será a nível de campanha, veja abaixo o script que satisfaz como solução este problema:

  1. function main() {
  2. var campanha = AdsApp.campaigns()
  3. .forDateRange("TODAY")
  4. .withCondition("Name = "Marketing Digital" AND ConversionRate > 0.10")
  5. .get();
  6. var orcamento_atual = campanha.next().getBudget();
  7. var novo_orcamento = orcamento_atual + ((orcamento_atual * 20) / 100);
  8. novo_orcamento = parseFloat(novo_orcamento.toFixed(2));
  9. orcamento_atual.setAmount(novo_orcamento);
  10. Logger.log("Orçamento Atual: R$ " + orcamento_atual + " Novo Orçamento: R$ " + novo_orcamento);}

Explicando o Script:

No script acima, podemos observar que na linha 2, criamos uma variável chamada campanha, onde está variável é a que utilizaremos para manipular a classe AdsApp.campaigns();

Linha 3: Já trabalhamos com esta instrução na postagem anterior (Scripts do Google Ads (Adwords Script) - Conceituando e Criando Instruções Básicas), através dela estamos definindo que o período ao qual desejamos utilizar é hoje. Observe que no enunciado do problema é dito que temos que aumentar em 20% o orçamento se a taxa de conversão estiver acima de 10% HOJE;

Linha 4: Também já trabalhamos com esta instrução anteriormente, ela nos permite dispor uma condição, onde neste caso a condição é o nome da campanha ser Marketing Digital e a taxa de conversão ser superior a 10%. O nome da campanha deve estar escrito exatamente como você o definiu e necesariamente tem que ser escrito entre apóstrofo;

Linha 5: É o método get(), cujo também já o conhecemos. Este nos permite utilizar a variável campanha, que anteriormente foi escrita dentro do bloco de instruções;

Linha 6: Nesta linha criamos uma variável para receber o orçamento da campanha;

Linha 7: Estamos fazendo o cálculo de acréscimo de 20% sob o orçamento e armazenando o valor dentro da variável novo_orcamento;

Linha 8: Aqui apenas estamos fazendo com que o novo valor tenha no máximo 2 casas decimais. Como fizemos o cálculo na linha 7, o valor poderia ter muitas casas decimais (exemplo: 50.5555556), logo para isto não acontecer, utilizamos a função parseFloat;

Linha 9: Na linha 9 a mágica acontece, nesta linha nós realizamos a alteração do orçamento atual para o novo através da instrução setAmount();

Linha 10: Nesta linha apenas estamos exibindo no compilador qual era o orçamento anterior e qual passou a ser o novo orçamento, isto foi apenas um adendo, uma vez que no enunciado não foi solicitado.

Confira abaixo o resultado no compilador, na guia Registros:

Na guia alterações, caso o script fosse executado, então haveria atualização do orçamento, confira abaixo:

2º Se a url final não estiver funcionando, então pausar o anúncio

Em muitas oportunidades a página de destino pode parar de funcionar, dar erro 404, 403 ou outro, enfim se a url estiver com "problema" e continuarmos veiculando nossos anúncios, teremos efetivamente gasto crédito, pois o prospecto ao clicar em nosso anúncio não visualizará o conteúdo de nossa página. Com o script abaixo, nós vericamos qual é a url final de um anúncio e fazemos um teste nela, verificando o que o servidor responde, dependendo de sua resposta, então tomamos uma decisão, de pausar ou manter ativo o anúncio, vamos ver abaixo o script:

  1. function main() {
  2. var anuncio = AdsApp.ads()
  3. .get();
  4. var anuncio_manipulado = anuncio.next();
  5. var url_final = anuncio_manipulado.urls().getFinalUrl();
  6. var resposta_servidor = UrlFetchApp.fetch(url_final).getResponseCode();
  7. if(resposta_servidor != 200){
  8. anuncio_manipulado.pause();
  9. Logger.log("O anúncio foi pausado: " + anuncio_manipulado.getId());}}

Explicando o Script:

Linha 2: Nesta linha estamos acessando o nível de anúncio, através da classe AdsApp.ads();

Linha 4: Criamos a variável anuncio_manipulado que recebe o anúncio ao qual iremos manipular;

Linha 5: Criamos a variável url_final que recebe a url final do anúncio, para isto utilizamos o objeto urls() com o método getFinalUrl(), que retornará a url final, então armazenando esta url dentro da variável url_final;

Linha 6: A variável resposta_servidor recebe a classe UrlFetchApp, onde através do .fetch é buscada a url e o método getResponseCode, retorna a resposta do servidor em formato de código numeral, aqui é onde de fato a mágica aconteceu, neste momento já sabemos se está tudo certo com a url ou não;

Linha 7: Através da função if (se), condicionamos a execução do restante do script. Basicamente citamos: Se a variável resposta_servidor for diferente (!=) de 200 (este é o código que o servidor retorna quando tudo está certo), então o script continua rodando, lembrando que como é uma função, então devemos utilizar as chaves ( { );

Linha 8: A linha 8 só será executada apenas se a condição for verdadeira, e sendo, então o anúncio será pausado, através do método pause();

Linha 9: Nesta linha, apenas estamos exibindo no compilador o resultado e fechando as funções function main() e if, utilizando as chaves ( } ).

Abaixo, mostro o resultado exibido no compilador, onde utilizei uma url final que não estava funcionando, apenas para que você pudesse visualizar o resultado, confira:

Abaixo mostro as alterações que aconteceriam se o script fosse executado:

3º Precisamos de avisar por e-mail quando uma campanha estiver sem impressões:

Bom, iremos trabalhar a nível de campanha para sanar este problema, verificaremos todas as campanhas da conta e analisaremos se elas estão sem impressões, aquelas que estiverem, então iremos alocar numa variável e enviar por e-mail, avisando ao gerente da conta, vejamos o script abaixo:

  1. function main() {
  2. var campanha = AdsApp.campaigns()
  3. .forDateRange("TODAY")
  4. .withCondition("Status = ENABLED")
  5. .get();
  6. while(campanha.hasNext()){
  7. var manipula_campanha = campanha.next();
  8. var impressoes = manipula_campanha.getStatsFor("TODAY").getImpressions();
  9. if(impressoes == 0){
  10. var result_impressoes = 1;
  11. var resultado_impressoes = resultado_impressoes + " A campanha: " + manipula_campanha.getName() + " não está tendo impressões ";}
  12. else{
  13. Logger.log("Nome da Campanha = " + manipula_campanha.getName() + " Impressões: = " + impressoes);}}
  14. if(result_impressoes == 1){
  15. MailApp.sendEmail("danilo@mazukim.com.br", "Campanha sem Impressões", resultado_impressoes);}}

Explicando o Script:

Até a linha 5, acredito que não é surpresa para quem acompanhou este e as demais postagens sobre os scripts do Google Ads.

Linha 6: Nesta linha estamos utilizando a função while, que servirá como um laço de repetição, enquanto uma condição for verdadeira, então ela continuará fazendo com que o restante do script que está entre as suas chaves, rode. Neste caso a condição é enquanto a variável campanha encontrar novas campanhas, enquanto isto for verdadeiro, continue.

Para verificarmos a quantidade de campanhas existentes, utilizamos a função hasNext();

Linha 7: Criamos a variável manipula_campanha, onde armazenaremos a próxima campanha encontrada;

Linha 8: Através da variável manipula_campanha, podemos utilizar o método getStatsFor, com o parâmetro TODAY, onde então nos permitirá exibir métricas do dia. Neste caso desejamos as impressões, desta forma, a variável impressoes estará armazenando as impressões da campanha no dia de hoje;

Linha 9: Aqui utilizamos a função IF, condicionando, se a variável impressoes for igual a zero, então continue;

Linha 10: Esta linha e a linha 11, só rodará com a condição sendo satisfeita. Criamos uma variável chamada result_impressoes e alocamos o número 1 nela, fizemos isto, pois mais à frente no script iremos utiliza-la;

Linha 11: A variável resultado_impressoes irá receber os nomes das campanhas que não tem impressões, observe que foi utilizada a variável resultado_impressoes que está recebendo a própria variável resultado_impressoes ( resultado_impressoes = resultado_impressoes...) fizemos isto para que no próximo looping as informações inicialmente armazenadas não fossem sobrepostas;

Linha 12: Utilizamos a função else, que significa senão, como utilizamos o If acima, então se a condição do if não for verdadeira, as linhas do script que irão rodar, serão as do else;

Linha 13: Apenas estamos exibindo no compilador o nome da campanha e a sua quantidade de impressões, lembrando que só aparecerá no compilador esta mensagem se a condição do if não for verdadeira, ou seja, se as campanhas tiverem impressões;

Linha 14: Conforme foi explicado na linha 10, iremos utilizar a variável result_impressoes para verificar se ela é igual a um, sendo, é porque tem campanha sem impressão, desta forma então a condição será verdadeira e um e-mail será enviado de notificação, assim como descrevo abaixo;

Linha 15: Nesta linha, utilizamos a função MailApp.sendEmail para que um e-mail fosse enviado ao gerente da conta, a fim de avisa-lo que tem campanha sem impressão.

Utilizei campanhas sem impressões, a fim de que o e-mail de notificação fosse enviado a mim, confira abaixo o print:

Feedback:

Chegamos ao final da quarta postagem sobre Scripts do Google Ads (AdWords Script). Nesta postagem aprendemos a acessar os diferentes níveis do Google Ads, assim como solucionamos alguns problemas.

Em nossa próxima inteiração, continuaremos resolvendo problemas do cotidiano utilizando os scripts do Google Ads.

Espero que esteja aproveitando este conteúdo e não exite, se ficou com dúvida, quer dispor uma sugestão, rodou script e não funcionou, deixe seu comentário abaixo e rapidamente irei responder.

Consuma Mais Conteúdo de Marketing Digital


Como Anunciar no Google?

Qual a Importância de um Negócio Utilizar o Instagram? O Meu Precisa?

Respondemos as Principais Dúvidas Sobre Google Ads

Quer ter o mesmo resultado que o nosso blog?
Comece a criar conteúdo com a Mazukim Agora!

Quero Fazer uma Avaliação!