Os scripts do Google Ads fornecem certo gerenciamento das suas campanhas Performance Max. Você pode 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. 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 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 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();
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);