Os scripts do Google Ads permitem gerenciar algumas campanhas Performance Max. É possível usar
scripts para extrair campanhas Performance Max, gerenciar grupos de recursos e gerar
relatórios. No entanto, não é possível usar scripts para criar campanhas Performance Max. Para
fazer 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 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 de anúncios ou objetos de anúncios que você possa conferir. Tudo relacionado a esses conceitos em outras campanhas é processado automaticamente com base nos grupos de recursos que você define.
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 conferir uma visão geral completa dos tipos de recursos necessários, consulte o guia de recursos da API Performance Max do 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 de recursos. Não é possível criar esses grupos de recursos diretamente em scripts, mas é possível adicionar e remover recursos de um grupo de recursos.
Adicionar recurso a um 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:
// 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, 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 documentação de referência de
AssetSelector
para conferir a lista completa de opções de filtro.
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 vai criar o recurso automaticamente. Se o texto for uma cópia exata de um recurso de texto existente, ele 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, é 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 acessar 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 recurso 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 para criar
sua própria consulta.
Depois de ter o recurso de destino, chame remove
no grupo de recursos para removê-lo 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);