Os scripts do Google Ads permitem gerenciar suas campanhas Performance Max.
É possível usar scripts para recuperar campanhas Performance Max, gerenciar grupos de recursos e gerar relatórios, mas não para criar campanhas Performance Max. Para 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 na
coleção performanceMaxCampaigns
de um objeto AdsApp
. Você pode recuperá-los como de costume:
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
Ao contrário de outros tipos de campanha, as campanhas Performance Max não têm grupos de anúncios ou objetos de anúncio que você pode ver. Tudo relacionado a esses conceitos em outras campanhas é processado automaticamente com base nos grupos de recursos definidos.
Recursos e grupos de recursos
Os anúncios das campanhas Performance Max são veiculados com base em recursos, como vídeos, imagens, títulos e descrições, fornecidos por você ou gerados automaticamente. Para uma visão geral completa de quais tipos de recursos são 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 precisa ter pelo menos um grupo. Não é possível criar esses grupos de recursos diretamente em scripts, mas é possível 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, use o recurso que você acabou de criar e adicione-o a um grupo de recursos existente:
// 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. Confira uma lista completa de tipos de recursos na documentação da API Google Ads.
Para usar um recurso existente, primeiro crie um seletor de recursos:
const assetSelector = AdsApp.adAssets().assets();
Em seguida, use um filtro withCondition
para restringir aos recursos que você quer
operar. Consulte a documentação de referência de AssetSelector
para ver uma lista completa de opções de filtro.
Por fim, busque o iterador e faça a iteração 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, já que não é necessário criar o recurso com antecedência. Basta especificar o texto em vez de um recurso, e o sistema vai 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, veja como criar um recurso de título:
assetGroup.addAsset('asset text here', 'HEADLINE');
Remover recurso do grupo de recursos
Também é possível remover um recurso de um grupo de recursos. No entanto, lembre-se de que é necessário 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 receber uma lista de recursos em um determinado grupo de recursos 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}'`
);
Isso seleciona o nome do recurso do ativo como identificador exclusivo. Você também pode selecionar outros campos, como asset.type
ou asset.text_asset.text
, para refinar ainda mais os resultados. Use o Criador de consultas para esse tipo de relatório e crie sua própria consulta.
Depois de ter 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);