Campagne Performance Max con AdsApp

Il modo migliore per gestire le campagne Performance Max con gli script Google Ads è utilizzare la strategia di mutazione per gestire direttamente le tue campagne Performance Max. Le campagne Performance Max possono essere create solo con la funzione mutate. Tuttavia, se preferisci, puoi utilizzare anche altri oggetti AdsApp per recuperare le campagne Performance Max, gestire i gruppi di asset ed eseguire report.

Recupero delle campagne Performance Max

Le campagne Performance Max sono disponibili tramite la raccolta performanceMaxCampaigns di un oggetto AdsApp. Puoi recuperarli come di consueto:

const campaignName = "My Performance Max campaign";

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

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

A differenza di altri tipi di campagne, le campagne Performance Max non hanno gruppi di annunci o oggetti annuncio visibili. Tutto ciò che riguarda questi concetti per altre campagne viene gestito automaticamente in base ai gruppi di asset che imposti.

Asset e gruppi di asset

Gli annunci delle campagne Performance Max vengono pubblicati a partire dagli asset, come video, immagini, titoli e descrizioni, forniti da te o generati automaticamente. Per una panoramica completa dei tipi di asset richiesti, consulta la guida agli asset Performance Max dell'API Google Ads.

Gli asset per le campagne Performance Max vengono raggruppati in un gruppo di asset e ogni campagna Performance Max deve avere almeno un gruppo di asset. Non puoi creare questi gruppi di asset direttamente negli script, ma puoi aggiungere e rimuovere asset da un gruppo di asset esistente.

Aggiungere un asset a un gruppo di asset

Innanzitutto, crea l'asset:

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

Poi, utilizzando l'asset appena creato, aggiungilo a un gruppo di asset esistente:

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

Tieni presente che nell'ultimo passaggio devi specificare il tipo di asset. Puoi trovare un elenco completo dei tipi di asset nella documentazione dell'API Google Ads.

Per utilizzare una risorsa esistente, crea prima un selettore di risorse:

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

Poi utilizza un filtro withCondition per restringere la ricerca agli asset su cui vuoi intervenire. Consulta la AssetSelector documentazione di riferimento per un elenco completo delle opzioni di filtro.

Infine, recupera l'iteratore e itera come con altre entità:

const assetIterator = assetSelector.get();

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

Asset di testo

Gli asset di testo funzionano in modo leggermente diverso, in quanto non è necessario creare l'asset in anticipo. Basta specificare il testo anziché un asset e il sistema creerà automaticamente l'asset. Se il testo è una copia esatta di un asset di testo esistente, verrà riutilizzato l'asset esistente.

Ad esempio, ecco come creare una risorsa titolo:

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

Rimuovere un asset da un gruppo di asset

Puoi anche rimuovere un asset da un gruppo di asset, ma tieni presente che devi avere un numero minimo di determinati tipi di asset affinché la campagna sia valida.

Ecco come rimuovere l'asset aggiunto nell'esempio precedente:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Puoi anche ottenere un elenco degli asset in un determinato gruppo di asset con la funzione 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}'`
);

In questo modo, il nome risorsa dell'asset viene selezionato come identificatore univoco. Puoi selezionare anche altri campi, come asset.type o asset.text_asset.text, per perfezionare ulteriormente i risultati. Utilizza lo strumento di creazione delle query per questo tipo di report per creare la tua query.

Una volta ottenuto l'asset di destinazione, chiama remove sul gruppo di asset per rimuovere l'asset dal gruppo di asset:

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