Performance Max-Kampagnen mit AdsApp

Mit Google Ads-Scripts können Sie Ihre Performance Max-Kampagnen verwalten. Sie können Scripts verwenden, um Performance Max-Kampagnen abzurufen, Asset-Gruppen zu verwalten und Berichte zu erstellen. Allerdings lassen sich mit Scripts keine Performance Max-Kampagnen erstellen. Für komplexere Vorgänge finden Sie im Rest dieses Leitfadens einen allgemeineren Ansatz mit mutate.

Abrufen von Performance Max-Kampagnen

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 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 Sie können einer vorhandenen Asset-Gruppe Assets hinzufügen und 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 bestehenden 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 in der Referenzdokumentation zu AssetSelector.

Rufen Sie schließlich den Iterator ab und iterieren Sie 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 ein Asset auch aus einer Asset-Gruppe entfernen. Beachten Sie jedoch, dass für eine gültige Kampagne eine Mindestanzahl bestimmter Arten von Assets erforderlich 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 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:

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