Campanhas Performance Max usando o AdsApp

Os scripts do Google Ads permitem um certo nível de gerenciamento das suas campanhas Performance Max do Shopping. Você pode usar para recuperar campanhas Performance Max, gerenciar grupos de recursos e veicular Relatórios No entanto, não é possível usar scripts para criar campanhas Performance Max. Para realizar operações mais avançadas, consulte o restante deste guia, que demonstra uma abordagem mais genérica usando mutate.

Recuperação de campanhas Performance Max

As campanhas Performance Max estão disponíveis performanceMaxCampaigns coleção de um AdsApp objeto. É possível recuperá-las 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 de campanha, as campanhas Performance Max não têm grupos ou objetos de anúncio que você pode ver, tudo relacionado a esses conceitos para as outras campanhas são administradas automaticamente com base nos grupos de recursos que você definido.

Recursos e grupos de recursos

Os anúncios das campanhas Performance Max recursos como vídeos, imagens, títulos e descrições fornecidos por você ou geradas automaticamente. Para uma visão geral completa dos tipos de recursos obrigatório, consulte o recurso de campanhas Performance Max da API Google Ads guia.

Os recursos das campanhas Performance Max são agrupados em um grupo. e cada campanha Performance Max precisa ter pelo menos um grupo de recursos. Você não pode criar esses grupos de recursos diretamente em scripts, mas você pode adicionar e remover recursos de um grupo atual.

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();

Use o recurso que você acabou de criar para adicioná-lo a um grupo:

// 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. É possível encontrar um lista completa dos tipos de recursos na API Google Ads documentação

Para usar um recurso atual, primeiro crie um seletor de recursos:

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

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

Por fim, busque o iterador e itere da mesma forma que fez 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 não é preciso torná-los com antecedência. Basta especificar o texto em vez de um recurso, e o sistema para criar o recurso automaticamente. Se o texto for uma cópia exata de uma de texto existente, o 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, tenha em mente que você deve ter um número mínimo de certos tipos de recursos para que a campanha seja válida.

Veja como remover o recurso que foi adicionado no exemplo anterior:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Também é possível acessar uma lista dos recursos de um determinado grupo com o search. função:

// 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}'`
);

Isso seleciona o nome do recurso do recurso como identificador exclusivo. Você pode selecione outros campos também, como asset.type ou asset.text_asset.text para refinar ainda mais os resultados. Usar o criador de consultas para esse relatório type para criar sua própria consulta.

Assim que você tiver o recurso de destino, chame remove no grupo de recursos para remover o recurso do grupo:

// 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);