Performance Max-Kampagnen mit AdsApp

Die beste Möglichkeit, Ihre Performance Max-Kampagnen mit Google Ads-Scripts zu verwalten, ist die Verwendung der Mutate-Strategie, um Ihre Performance Max-Kampagnen 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.

Abrufen von Performance Max-Kampagnen

Performance Max-Kampagnen sind über die Sammlung performanceMaxCampaigns 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 gibt es bei 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 erledigt.

Assets und Asset-Gruppen

Anzeigen aus Performance Max-Kampagnen werden mit Assets wie Videos, Bildern, Anzeigentiteln und Textzeilen ausgeliefert, 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 für die Google Ads API.

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

Asset 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 das gerade erstellte Asset dann einer 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, die Sie bearbeiten möchten. Eine vollständige Liste der Filteroptionen finden Sie unter AssetSelector.

Rufen Sie schließlich den Iterator ab und durchlaufen Sie ihn wie bei anderen Einheiten:

const assetIterator = assetSelector.get();

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

Text-Assets

Text-Assets funktionieren etwas anders, da Sie das Asset nicht im Voraus erstellen müssen. Sie geben einfach den Text anstelle eines Assets an und das System erstellt das Asset automatisch für Sie. Wenn der Text eine genaue Kopie eines vorhandenen Text-Assets ist, wird stattdessen das vorhandene Asset wiederverwendet.

So erstellen Sie beispielsweise ein Überschriften-Asset:

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

Asset aus Asset-Gruppe entfernen

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

So entfernen Sie das im vorherigen Beispiel hinzugefügte Asset:

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 wie asset.type oder asset.text_asset.text auswählen, um die Ergebnisse weiter einzugrenzen. Verwenden Sie den Query Builder 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);