Campanhas de maior desempenho

Os scripts do Google Ads fornecem certo gerenciamento das suas campanhas Performance Max. É possível usar scripts para recuperar campanhas Performance Max, gerenciar grupos de recursos e gerar relatórios. No entanto, não é possível usar scripts para criar campanhas Performance Max.

Recuperação de campanhas Performance Max

As campanhas Performance Max estão disponíveis no conjunto performanceMaxCampaigns de um objeto AdsApp. Elas podem ser recuperadas normalmente:

const campaignName = "My Performance Max campaign";

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

for (const campaign of campaignIterator) {
  ...
}

Ao contrário de alguns outros tipos, as campanhas Performance Max não têm grupos ou objetos de anúncio visíveis. Tudo relacionado a esses conceitos para outras campanhas é processado automaticamente com base nos grupos de recursos definidos.

Recursos e grupos de recursos

Os anúncios das campanhas Performance Max não contêm recursos, como vídeos, imagens, títulos e descrições, tanto fornecidos por você quanto gerados automaticamente. Para uma visão geral completa dos tipos de recurso necessários, consulte o Guia de recursos das campanhas Performance Max da API Google Ads.

Os recursos das campanhas Performance Max são agrupados em um grupo de recursos, e cada campanha Performance Max precisa ter pelo menos um grupo. Não é possível criar esses grupos de recursos diretamente nos scripts, mas você pode adicionar e remover recursos de um grupo existente.

Adicionar recurso ao grupo

Primeiro, crie o recurso:

const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
   .withName("new asset name")
   .withData(imageBlob)
   .build();
const imageAsset = assetOperation.getResult();

Em seguida, adicione o recurso a um grupo existente usando o recurso que você acabou de criar:

// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
   .withCondition(`campaign.name = '${campaignName}'`)
   .get();
let campaign;
if (campaignIterator.hasNext()) {
   campaign = campaignIterator.next();
} else {
   throw `No campaign found with name ${campaignName}.`
}

// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();

// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();

// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');

Observe como você precisa especificar o tipo de recurso na última etapa. Você encontra uma lista completa dos tipos de recurso na documentação da API Google Ads.

Para usar um recurso atual, crie um seletor:

const assetSelector = AdsApp.adAssets().assets();

Em seguida, use um filtro withCondition para restringir aos recursos com que você quer operar. Para ver uma lista completa de opções de filtro, consulte a documentação de referência AssetSelector.

Por fim, busque o iterador e itere como com outras entidades:

const assetIterator = assetSelector.get();

for (const asset of assetIterator) {
   ...
}

Recursos de texto

Os recursos de texto funcionam de maneira um pouco diferente, porque você não precisa criar o recurso com antecedência. Basta especificar o texto em vez de um recurso e o sistema criará o recurso automaticamente. Se o texto for uma cópia exata de um recurso de texto existente, o recurso atual será reutilizado.

Por exemplo, confira como criar um recurso de título:

assetGroup.addAsset('asset text here', 'HEADLINE');

Remover recurso do grupo

Também é possível remover um recurso de um grupo. No entanto, você precisa ter um número mínimo de determinados tipos de recursos para que a campanha seja válida.

Veja como remover o recurso adicionado no exemplo anterior:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Também é possível consultar uma lista de recursos em um determinado grupo com a função search:

// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
   `SELECT asset.resource_name, asset_group_asset.field_type
    FROM asset_group_asset
    WHERE asset_group.resource_name = '${assetGroupName}'`
);

Essa ação seleciona o nome do recurso como identificador exclusivo. Também é possível selecionar outros campos, como asset.type ou asset.text_asset.text, para refinar ainda mais os resultados. Use o criador de consultas para este tipo de relatório para criar sua própria consulta.

Quando você tiver o recurso de destino, chame remove no grupo para removê-lo:

// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);

Relatórios

As campanhas Performance Max são informadas no recurso campaign com outros tipos de campanha. Para começar, você pode usar algo assim:

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

Não selecione nenhum campo ad_group, já que as campanhas Performance Max não têm grupos de anúncios. Portanto, nenhum grupo vai ser retornado. Além disso, asset_group não pode ser segmentado. Saiba mais sobre os relatórios no nosso guia de relatórios.

Também é possível gerar relatórios diretamente sobre os grupos de recursos. Para mais informações sobre como fazer isso, consulte o guia da Google Ads API sobre esse tópico. Você pode usar qualquer consulta exibida no método AdsApp.search nos scripts do Google Ads para ver os mesmos resultados.