Campagnes Performance Max utilisant AdsApp

Les scripts Google Ads permettent de gérer en partie 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 les utiliser pour créer des campagnes Performance Max. 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 à d'autres types de campagnes, les campagnes Performance Max ne comportent pas de groupes d'annonces ni d'objets d'annonce que vous pouvez consulter. Tout ce qui concerne ces concepts pour les autres campagnes est géré automatiquement pour vous en fonction des groupes d'assets que vous définissez.

Composants et groupes de composants

Les annonces des campagnes Performance Max sont diffusées à partir de composants tels que des vidéos, des images, des titres et des descriptions, que vous fournissez ou qui sont générés automatiquement. Pour obtenir un aperçu complet des types de composants requis, consultez le guide sur les 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 le composant :

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

Ensuite, à l'aide du composant que vous venez de créer, ajoutez-le à 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 à la dernière étape. Vous trouverez la liste complète des types de composants dans la documentation de l'API Google Ads.

Pour utiliser un élément existant, commencez par créer un sélecteur d'éléments :

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

Utilisez ensuite un filtre withCondition pour affiner la recherche et trouver les composants sur lesquels vous souhaitez effectuer une action. 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 avec 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. Le système créera automatiquement le composant pour vous. Si le texte est une copie exacte d'un composant texte existant, ce dernier sera réutilisé.

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

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

Supprimer un composant d'un groupe de composants

Vous pouvez également supprimer un composant d'un groupe de composants. Toutefois, n'oubliez pas 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}'`
);

Cette option sélectionne le nom de ressource du composant en tant qu'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 l'outil de création de requêtes pour ce type de rapport afin de créer votre propre requête.

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

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