Performance Max-Kampagnen mit AdsApp

Die beste Möglichkeit, Performance Max-Kampagnen mit Google Ads-Skripts zu verwalten, ist die Verwendung von der Mutate-Strategie, um sie direkt zu verwalten . Performance Max-Kampagnen können nur mit der Funktion mutate erstellt werden. Sie können aber auch andere AdsApp-Objekte verwenden, um Performance Max-Kampagnen abzurufen, Asset-Gruppen zu verwalten und Berichte zu erstellen.

Performance Max-Kampagnen abrufen

Performance Max-Kampagnen sind über die performanceMaxCampaigns-Sammlung eines AdsApp-Objekts verfügbar. Sie können sie wie gewohnt abrufen:

const campaignName = "My Performance Max campaign";

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

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

Im Gegensatz zu einigen anderen Kampagnentypen haben Performance Max-Kampagnen keine Anzeigengruppen oder Anzeigenobjekte, die Sie sehen können. Alles, was sich auf diese Konzepte für andere Kampagnen bezieht, wird automatisch auf Grundlage der von Ihnen festgelegten Asset-Gruppen verarbeitet.

Assets und Asset-Gruppen

Anzeigen aus Performance Max-Kampagnen basieren auf Assets wie Videos, Bildern, Anzeigentiteln und Textzeilen, die entweder von Ihnen bereitgestellt oder automatisch generiert werden. Eine vollständige Übersicht über die erforderlichen Asset-Typen finden Sie im Leitfaden zu Performance Max-Assets in der Google Ads API.

Assets für Performance Max-Kampagnen werden in einer Asset-Gruppe zusammengefasst. Jede Performance Max-Kampagne muss mindestens eine Asset-Gruppe haben. Sie können diese Asset-Gruppen nicht direkt in Skripts erstellen, aber Sie können Assets zu einer vorhandenen Asset-Gruppe hinzufügen und daraus entfernen.

Asset zu einer Asset-Gruppe hinzufügen

Erstellen Sie zuerst das 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();

Fügen Sie es dann der vorhandenen Asset-Gruppe hinzu:

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

Beachten Sie, dass Sie im letzten Schritt den Asset-Typ angeben müssen. Eine vollständige Liste der Asset-Typen finden Sie in der Google Ads API-Dokumentation

Wenn Sie ein vorhandenes Asset verwenden möchten, erstellen Sie zuerst eine Asset-Auswahl:

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

Verwenden Sie dann einen withCondition-Filter, um die Assets einzugrenzen, mit denen Sie arbeiten möchten. Eine vollständige Liste der Filteroptionen finden Sie unter AssetSelector.

Rufen Sie schließlich den Iterator ab und iterieren Sie ihn wie bei anderen Entitäten:

const assetIterator = assetSelector.get();

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

Text-Assets

Bei Text-Assets ist die Vorgehensweise etwas anders. Sie müssen das Asset nicht im Voraus erstellen. Geben Sie einfach den Text anstelle eines Assets an. Das System erstellt das Asset dann automatisch für Sie. Wenn der Text eine exakte Kopie eines vorhandenen Text-Assets ist, wird stattdessen das vorhandene Asset wiederverwendet.

So erstellen Sie beispielsweise ein Anzeigentitel-Asset:

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

Asset aus einer Asset-Gruppe entfernen

Sie können ein Asset auch aus einer Asset-Gruppe entfernen. Beachten Sie jedoch, dass jede Asset-Gruppe eine Mindestanzahl bestimmter Asset-Typen enthalten muss, damit die Kampagne gültig ist.

So entfernen Sie das Asset, das im vorherigen Beispiel hinzugefügt wurde:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Mit der Funktion search können Sie auch eine Liste der Assets in einer bestimmten Asset-Gruppe abrufen:

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

Dadurch wird der Ressourcenname des Assets als eindeutige Kennung ausgewählt. Sie können auch andere Felder auswählen, z. B. asset.type oder asset.text_asset.text, um die Ergebnisse weiter zu verfeinern. Verwenden Sie den Abfrage-Editor für diesen Berichtstyp um eine eigene Abfrage zu erstellen.

Sobald Sie das Ziel-Asset haben, rufen Sie remove für die Asset-Gruppe auf, um das Asset aus der Asset-Gruppe zu entfernen:

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