Contagem regressiva da venda

A exibição de valores atualizados e dinâmicos no texto do anúncio pode ser muito atrativa para os usuários. Com os parâmetros de anúncio, você pode atualizar valores numéricos em anúncios de texto sem que seja necessário excluir e adicionar novamente o anúncio ou aguardar verificações de política. Este script demonstra como atualizar seus parâmetros de anúncio a cada hora para fazer a contagem regressiva até uma venda que você deseja promover.

Como funciona

Suponhamos que você tenha uma venda próxima:

Venda com contagem regressiva

Este script calcula quantos dias e horas restam até a data desejada, encontra o grupo de anúncios específico configurado para essa promoção e atualiza os parâmetros do anúncio de todas as palavras-chave nesse grupo de anúncios com os resultados do cálculo.

Qual grupo de anúncios?

O script pressupõe que você tem um único grupo de anúncios para o qual deseja exibir essa promoção. Mas, e se você quiser exibir essa promoção para mais de um grupo de anúncios? Você tem algumas opções.

Vários grupos de anúncios

Se deseja afetar vários grupos de anúncios, você pode primeiro criar uma matriz

var AD_GROUP_NAMES = ['Widget Sale', 'Widget Sale 2'];

e, em seguida, modificar getAdGroup para getAdGroups assim:

function getAdGroups(names) {
  var predicateValues = "['" + names.join("','") + "']";
  Logger.log(predicateValues);
  return AdWordsApp.adGroups()
      .withCondition('Name IN ' + predicateValues)
      .withLimit(names.length)
      .get();
}

Depois, modifique a função "main()" para usar vários grupos de anúncios:

var adGroups = getAdGroups(AD_GROUP_NAMES);
while (adGroups.hasNext()) {
  var adGroup = adGroups.next();
  var keywords = adGroup.keywords().get();
  // ...
}

Todos os grupos de anúncios em uma campanha

Você também poderia executar esse script para uma única campanha usando uma função semelhante a "getAdGroup" para campanhas, chamando campaign.adGroups().get() e estruturando sua função main() da mesma maneira que o script de exemplo.

E os lances de palavra-chave?

Estamos atualizando os parâmetros de anúncio vinculados às palavras-chave. Assim, o texto do anúncio se torna mais dinâmico. Mas, e se quisermos modificar nossos lances de palavra-chave ao mesmo tempo? Isso é bem simples, porque já estamos em loop nas palavras-chave de segmentação.

while (keywords.hasNext()) {
  var keyword = keywords.next();
  // We want to update {param1} to use our calculated days and {param2}
  // for hours.
  keyword.setAdParam(1, timeLeft['days']);
  keyword.setAdParam(2, timeLeft['hours']);
  if (timeLeft['days'] < 5) {
    keyword.bidding().setCpc(keyword.getTopOfPageCpc());
  } else {
    keyword.bidding().setCpc(keyword.getFirstPageCpc());
  }
}

Esse código atualiza o CPC máximo da palavra-chave para corresponder ao "TopOfPageCpc" dessa palavra-chave, caso haja menos de cinco dias restantes até o prazo final. Isso garante que estamos promovendo fortemente essa campanha bem antes do nosso prazo. Do contrário, ele define o lance como o CPC da primeira página, garantindo que o anúncio seja visto, mas sem pagar pelo espaço principal.

Nossa venda começou, e agora?

Assim que terminamos o período de contagem regressiva e a venda começou, nosso anúncio não tem tanto sentido. Seria muito mais relevante promover a venda com um texto diferente. Vamos melhorar nosso exemplo para promover melhor a venda enquanto ele continua ativo.

Primeiro, vamos imaginar que já criamos um segundo grupo de anúncios que promove a venda permanente. Chamaremos esse grupo de "Venda de widget em andamento". Vamos adicionar algumas variáveis novas no início do script, assim:

// Ad Group that has text ads with AdParams for use while the sale is ongoing.
var AD_GROUP_NAME_IN_PROGRESS = 'Widget Sale In Progress';
var END_DATE_OF_SALE = new Date('December 31, 2012');

Em seguida, alteramos o restante do corpo da função principal para incorporar esta nova lógica:

function main() {
  var timeLeft = calculateTimeLeftUntil(END_DATE, new Date());
  var adGroup = getAdGroup(AD_GROUP_NAME);
  if (timeLeft['days'] <= 0 && timeLeft['hours'] <= 0) {
    adGroup.pause();
    adGroup = getAdGroup(AD_GROUP_NAME_IN_PROGRESS);
    adGroup.enable();
    timeLeft = calculateTimeLeftUntil(END_DATE_OF_SALE, new Date());
  }
  var keywords = adGroup.keywords().get();
  // ...
}

Adicionamos uma lógica para verificar se já passamos o início da venda. Em caso positivo, pausamos o "adGroup" (contagem regressiva), consultamos o "adGroup" para a parte em andamento, o ativamos e calculamos um novo "timeLeft" com base no término da venda.

Agendamento

Agendado para ser executado a cada hora, o script cria um texto de anúncio dinâmico que faz a contagem regressiva das horas até a venda.

Configuração

  • Crie um novo grupo de anúncios usando um anúncio de texto. Em uma das linhas de descrição do anúncio, adicione alguns parâmetros do anúncio. Por exemplo:
    • Descrição: faltam {param1:a few} dias e {param2:and} horas para acabar.
    Use qualquer valor que você queira para os outros campos.
  • Adicione algumas palavras-chave relevantes ao grupo de anúncios.
  • Crie um novo script do Google AdWords usando o código-fonte abaixo.
  • No alto do script, substitua o valor da variável "AD_GROUP_NAME" pelo nome do grupo de anúncios criado por você.
  • Durante a visualização, você verá que ela definirá os parâmetros de anúncio como os dias e as horas restantes até a data desejada para cada palavra-chave no grupo de anúncios especificado. Você pode visualizar seus anúncios usando a Ferramenta de visualização.

Código-fonte

// Copyright 2015, Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * @name Sales Countdown
 *
 * @overview The sales countdown script demonstrates how to update your ad
 *     parameters hourly to count down until a sale you'd like to promote. See
 *     https://developers.google.com/adwords/scripts/docs/solutions/sale-countdown
 *     for more details.
 *
 * @author AdWords Scripts Team [adwords-scripts@googlegroups.com]
 *
 * @version 1.0
 *
 * @changelog
 * - version 1.0
 *   - Released initial version.
 */

// Date and time for the end of the sale. Be sure to include a time and timezone
// so that the sale ends exactly when you intend.
var END_DATE = new Date('February 17, 2016 13:00:00 -0500');
// Change this to the Ad Group you set up with text ads with AdParams.
var AD_GROUP_NAME = 'Widget Sale';

var DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000;

function main() {
  var timeLeft = calculateTimeLeftUntil(END_DATE);
  var adGroup = getAdGroup(AD_GROUP_NAME);
  var keywords = adGroup.keywords().get();
  while (keywords.hasNext()) {
    var keyword = keywords.next();
    // We want to update {param1} to use our calculated days and {param2}
    // for hours.
    keyword.setAdParam(1, timeLeft['days']);
    keyword.setAdParam(2, timeLeft['hours']);
  }
}

function calculateTimeLeftUntil(end) {
  var current = new Date();
  var timeLeft = {};
  var daysFloat = (end - current) / (DAY_IN_MILLISECONDS);
  timeLeft['days'] = Math.floor(daysFloat);
  timeLeft['hours'] = Math.floor(24 * (daysFloat - timeLeft['days']));

  // Prevent countdown to negative time period.
  if (timeLeft['days'] < 0) {
    timeLeft['days'] = 0;
  }
  if (timeLeft['hours'] < 0) {
    timeLeft['hours'] = 0;
  }

  return timeLeft;
}

function getAdGroup(name) {
  var adGroupIterator = AdWordsApp.adGroups()
      .withCondition('Name = "' + name + '"')
      .withLimit(1)
      .get();
  if (adGroupIterator.hasNext()) {
    return adGroupIterator.next();
  }
}

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.