Campagnes Performance Max utilisant AdsApp

Les scripts Google Ads permettent de gérer vos campagnes Performance Max. Vous pouvez utiliser des scripts pour récupérer des campagnes Performance Max, gérer des groupes d'assets et générer des rapports. Toutefois, vous ne pouvez pas créer de campagnes Performance Max à l'aide de scripts. Pour effectuer des opérations plus avancées, consultez le reste de ce guide, qui présente une approche plus générique à l'aide de mutate.

Récupération des campagnes Performance Max

Les campagnes Performance Max sont disponibles via la collection performanceMaxCampaigns d'un objet AdsApp. Vous pouvez les récupérer comme d'habitude:

const campaignName = "My Performance Max campaign";

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

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

Contrairement à certains autres types de campagnes, les campagnes Performance Max ne comportent pas de groupes d'annonces ni d'objets d'annonces visibles. Tout ce qui concerne ces concepts pour d'autres campagnes est géré automatiquement en fonction des groupes d'assets que vous définissez.

Composants et groupes de composants

Les annonces des campagnes Performance Max s'appuient sur des composants tels que des vidéos, des images, des titres et des descriptions, que vous fournissez ou que vous générez automatiquement. Pour obtenir un aperçu complet des types d'assets requis, consultez le guide des composants Performance Max de l'API Google Ads.

Les composants des campagnes Performance Max sont regroupés dans un groupe de composants. Chaque campagne Performance Max doit comporter au moins un groupe de composants. Vous ne pouvez pas créer ces groupes de composants directement dans les scripts, mais vous pouvez ajouter et supprimer des composants d'un groupe de composants existant.

Ajouter un composant à un groupe de composants

Commencez par créer 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();

Ajoutez ensuite le composant que vous venez de créer à un groupe de composants existant:

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

Notez que vous devez spécifier le type d'élément à l'étape finale. Vous trouverez la liste complète des types d'assets dans la documentation de l'API Google Ads.

Pour utiliser un composant existant, créez d'abord un sélecteur de composants:

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

Utilisez ensuite un filtre withCondition pour affiner les composants sur lesquels vous souhaitez effectuer des opérations. Pour obtenir la liste complète des options de filtrage, consultez la documentation de référence sur AssetSelector.

Enfin, récupérez l'itérateur et itérez comme pour les autres entités:

const assetIterator = assetSelector.get();

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

Composants Texte

Les composants texte fonctionnent un peu différemment, car vous n'avez pas besoin de les créer à l'avance. Il vous suffit de spécifier le texte au lieu d'un composant, et le système le créera automatiquement. Si le texte est un double exact d'un composant texte existant, le composant existant sera réutilisé à la place.

Par exemple, voici comment créer un composant Titre:

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

Supprimer un élément d'un groupe d'éléments

Vous pouvez également supprimer un composant d'un groupe de composants. Toutefois, gardez à l'esprit que vous devez disposer d'un nombre minimal de certains types de composants pour que la campagne soit valide.

Voici comment supprimer le composant ajouté dans l'exemple précédent:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Vous pouvez également obtenir la liste des composants d'un groupe de composants donné à l'aide de la fonction 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}'`
);

Le nom de la ressource de l'asset est sélectionné comme identifiant unique. Vous pouvez également sélectionner d'autres champs, tels que asset.type ou asset.text_asset.text, pour affiner davantage les résultats. Utilisez le générateur de requêtes pour ce type de rapport pour créer votre propre requête.

Une fois que vous avez l'élément cible, appelez remove sur le groupe d'éléments pour le supprimer du groupe:

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