Rascunhos e experiências de campanha

Os scripts do Google Ads são compatíveis com rascunhos e experimentos de campanha, que são usados para preparar e testar mudanças nas campanhas das redes de pesquisa e de display.

Este guia explica o fluxo de trabalho básico para usar rascunhos e experimentos em um script.

Rascunhos

Um rascunho é um clone de uma campanha atual que não veicula anúncios próprios, mas pode ser usado para organizar mudanças sem modificar a campanha original. As mudanças preparadas podem ser aplicadas à campanha de base.

Criar um rascunho

Um rascunho é feito de uma campanha de base atual usando um DraftBuilder e fornecendo um nome exclusivo. A campanha de base precisa ser de pesquisa, da rede de pesquisa com inclusão da Rede de Display ou campanha de display (exceto a campanha para apps para dispositivos móveis na Rede de Display) e não pode ter um orçamento compartilhado.

const campaign = AdsApp.campaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get()
    .next();

const draftBuilder = campaign.newDraftBuilder()
    .withName("INSERT_DRAFT_NAME_HERE")
    .build();

const draft = draftBuilder.getResult();

DraftBuilder.build() retorna um DraftOperation, uma operação típica em scripts. Consulte nosso guia de builders para mais detalhes.

Um draft é identificado de maneira exclusiva pela combinação do ID da campanha de base e do ID do rascunho. Consulte DraftSelector.withIds() para mais informações.

Provisionar a campanha de rascunho

Um objeto draft relaciona uma campanha de base e uma campanha de rascunho. Para preparar atualizações na campanha de base, propague as mudanças pela campanha de rascunho.

Uma campanha de rascunho, como qualquer outra, tem métodos para receber e definir vários atributos, como critérios, grupos de anúncios, lances e anúncios.

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

As verificações de política de anúncios são realizadas para uma campanha de rascunho da mesma forma que para a campanha de base. Não é possível executar um experimento de uma campanha de rascunho que tenha anúncios que violem a política.

Executar o rascunho

Depois de provisionar a campanha de rascunho, você pode fazer uma destas ações:

  1. Se você não quiser usar as mudanças, basta remover o rascunho. A remoção é irreversível, mas ainda é possível visualizar o rascunho em Todos os rascunhos na guia "Rascunhos" da interface do Google Ads.

        draft.remove();
    
  2. Se você decidir manter as mudanças feitas no rascunho, poderá aplicá-las:

        draft.startApplying();
    

    Esse método inicia o processo de aplicação das atualizações à campanha de base. Assim, o rascunho terá o status Aplicando… na interface do Google Ads. No entanto, o método não vai notificar você quando o processo for concluído.

  3. Se você quiser testar as mudanças primeiro, use o rascunho para criar um experimento.

Experimentos

Um experimento executa uma campanha personalizável em paralelo à campanha original e mostra anúncios para uma porcentagem especificada de tráfego. Com base nos resultados do experimento, você pode aplicar as mudanças à campanha original, ramificar o experimento para uma campanha independente ou abandonar a campanha experimental.

Criar um experimento

Um experiment é semelhante a um rascunho e também é criado a partir de uma campanha de base. Você cria um experiment com um ExperimentBuilder. Isso cria automaticamente um experimento com dois "grupos" que representam as diferentes partes do experimento. Um grupo (chamado de grupo de controle) vai conter a campanha de base, e o outro (chamado de grupo de tratamento) vai conter uma nova campanha de rascunho que você vai personalizar (conforme as etapas do rascunho mostradas anteriormente) antes de programar o experimento.

Ao criar um experimento, defina todos os itens a seguir no builder:

withCampaign
A campanha em que você quer basear o experimento.
withTrafficSplitPercent
A quantidade de tráfego que vai para o grupo experimental. Para 50%, especifique 50.
withStartDate e withEndDate
Especifica a data de início e término da campanha. Especifique no formato YYYYMMdd.
withType
`SEARCH_CUSTOM` ou `DISPLAY_CUSTOM`, dependendo da rede que você está usando.
SEARCH_CUSTOMDISPLAY_CUSTOM
withSuffix
Especifica um sufixo que será adicionado ao nome da campanha de tratamento quando ela for criada.
withGoals
Especifica as metas desse experimento. Isso é apenas um lembrete das suas metas ao criar o experimento. Um bom valor padrão é [{metric: 'CLICKS', direction: 'INCREASE'}].

A porcentagem de divisão de tráfego determina qual parte do tráfego vai mostrar anúncios da campanha experimental em vez da campanha de base. Por esse motivo, cada campanha de base pode ter apenas um experimento em execução por vez.

const experiment = AdsApp.newExperimentBuilder()
  .withCampaign(campaign)
  .withTrafficSplitPercent(50)
  .withStartDate("20230501")
  .withEndDate("20230601")
  .withType("SEARCH_CUSTOM")
  .withSuffix("experiment")
  .withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
  .build();

// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();

Ao contrário dos rascunhos, os experimentos são identificados de maneira exclusiva por um único ID. Consulte ExperimentSelector.withIds() para mais informações.

Provisionar a campanha experimental

Semelhante a um draft, um experiment não é uma campanha. Em vez disso, ele relaciona a campanha de base, o rascunho e a campanha experimental. Os campos de uma campanha experimental podem ser modificados, com as seguintes exceções:

  • nome
  • status
  • data de início
  • data de término
  • orçamento
const experimentCampaign = experiment.getExperimentCampaign();

// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");

// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");

As mudanças no nome, na data de início e na data de término podem ser feitas no experimento, após o que serão propagadas para a campanha experimental.

// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");

// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);

Para iniciar o experimento, chame experiment.startScheduling(). Esse é um processo assíncrono, já que precisa copiar todas as configurações da campanha de base.

Após o término do experimento

Quando o experimento for concluído, você terá algumas opções. Recomendamos que você deixe o experimento terminar completamente para que ele pare de veicular anúncios, mas ainda seja possível interagir com ele. Um experimento concluído ainda pode ser removido, aplicado ou concluído, e as estatísticas de performance da campanha ainda estão acessíveis.

experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
  • Se você não estiver satisfeito com o experimento com base nas estatísticas, poderá remover o experimento, o que também remove a campanha experimental. A remoção do experimento é irreversível, mas ainda é possível visualizar o experimento em Todos os experimentos na guia "Experimentos" da interface do Google Ads.

        experiment.remove();
    
  • Se você estiver satisfeito com os resultados do experimento, terá duas opções:

    1. Você pode começar a aplicar as mudanças e, assim como nos rascunhos, não será notificado quando o processo for concluído.

          experiment.startApplying();
      
    2. Você pode estabelecer a campanha experimental como uma campanha independente e totalmente operacional, sem afetar a campanha de base. Esse processo, conhecido como conclusão, é concluído imediatamente e exige que um novo orçamento seja definido.

          const budget = AdsApp.budgets()
              .withCondition(`campaign_budget.id = ${budgetId}`)
              .get()
              .next();
      
          experiment.graduate(budget);
      

      A nova campanha não pode mais compartilhar um orçamento com a campanha de base, o que exige um novo orçamento. As campanhas concluídas são como campanhas normais, em que todos os campos podem ser modificados e podem servir como uma campanha de base para mais rascunhos e experimentos.

Outras considerações

Entidades de base

A introdução de rascunhos e experimentos nos scripts do Google Ads também introduz a noção de entidades de base. As campanhas de rascunho e experimentais e os grupos de anúncios em elas são diferentes das campanhas de base originais. É por isso que Campaign e AdGroup agora têm métodos para acessar a campanha de base e o grupo de anúncios: getBaseCampaign() e getBaseAdGroup().

Esses métodos retornam a entidade de chamada se forem chamados por uma campanha de base ou um grupo de anúncios. As entidades em campanhas e grupos de anúncios, como palavras-chave e anúncios, também receberam esses métodos.

Para ajudar a acompanhar as entidades de base, as campanhas receberam os isBaseCampaign(), isDraftCampaign() e isExperimentCampaign() métodos.

Os novos Campaign.draftCampaigns() e Campaign.experimentCampaigns() métodos permitem acessar todas as campanhas de rascunho e experimentais que têm a campanha de chamada como campanha de base. No entanto, não é possível selecionar campanhas de rascunho com CampaignSelector.withCondition(). Use AdsApp.drafts().

Tratamento de erros

Os métodos a seguir que envolvem rascunhos e experimentos prosseguem quando o script é executado, mas podem falhar de forma assíncrona:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

Aguarde para verificar se essas operações foram bem-sucedidas. A interface do Google Ads mostra os status Aplicado ou Ativo após a conclusão bem-sucedida de startApplying() e startScheduling(), respectivamente. Além disso, ela indica Não foi possível aplicar ou Não foi possível criar em caso de falha, permitindo que você clique para ver os erros.

Também é possível que alguns métodos falhem na fase de visualização, mas sejam bem-sucedidos após a execução. Por exemplo, depois de criar um rascunho:

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

Isso vai falhar no modo de visualização, já que não é possível acessar a campanha de rascunho imediatamente.

Da mesma forma, criar um experimento e tentar buscar imediatamente a campanha de rascunho vai falhar no modo de visualização, já que o rascunho não é criado.

Por esse motivo, verifique os registros abaixo da lista de scripts após a execução e continue com um script com falha na visualização somente se você acreditar que a causa é devido a limitações no modo de visualização.