Kampanie Performance Max korzystające z AdsApp

Najlepszym sposobem na zarządzanie kampaniami Performance Max za pomocą skryptów Google Ads jest użycie strategii mutate, która umożliwia bezpośrednie zarządzanie kampaniami Performance Max. Kampanie Performance Max można tworzyć tylko za pomocą funkcji mutate. Jeśli jednak wolisz, możesz też używać innych obiektów AdsApp do pobierania kampanii Performance Max, zarządzania grupami plików i generowania raportów.

Pobieranie kampanii Performance Max

Kampanie Performance Max są dostępne w kolekcji performanceMaxCampaigns obiektu AdsApp. Możesz je pobrać w zwykły sposób:

const campaignName = "My Performance Max campaign";

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

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

W przeciwieństwie do niektórych innych typów kampanii kampanie Performance Max nie mają grup reklam ani obiektów reklam, które można zobaczyć. Wszystko, co jest związane z tymi pojęciami w przypadku innych kampanii, jest obsługiwane automatycznie na podstawie ustawionych przez Ciebie grup plików.

Komponenty i grupy plików

Reklamy z kampanii Performance Max są wyświetlane na podstawie komponentów takich jak filmy, obrazy, nagłówki i teksty – dostarczonych przez Ciebie lub wygenerowanych automatycznie. Pełny przegląd wymaganych typów komponentów znajdziesz w przewodniku po komponentach Performance Max w interfejsie Google Ads API.

Komponenty kampanii Performance Max są zgrupowane w grupę plików, a każda kampania Performance Max musi mieć co najmniej 1 grupę plików. Nie możesz tworzyć tych grup plików bezpośrednio w skryptach, ale możesz dodawać i usuwać komponenty z istniejącej grupy plików.

Dodawanie komponentu do grupy plików

Najpierw utwórz komponent:

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

Następnie, używając utworzonego komponentu, dodaj go do istniejącej grupy plików:

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

Zwróć uwagę, że w ostatnim kroku musisz określić typ komponentu. Pełną listę typów zasobów znajdziesz w dokumentacji interfejsu Google Ads API.

Aby użyć istniejącego komponentu, najpierw utwórz selektor komponentów:

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

Następnie użyj filtra withCondition, aby zawęzić wyniki do komponentów, na których chcesz wykonać operację. Pełną listę opcji filtrowania znajdziesz w artykule AssetSelector.

Na koniec pobierz iterator i wykonaj iterację tak jak w przypadku innych encji:

const assetIterator = assetSelector.get();

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

Komponenty tekstowe

Komponenty tekstowe działają nieco inaczej, ponieważ nie musisz tworzyć komponentu z wyprzedzeniem. Zamiast komponentu wystarczy podać tekst, a system automatycznie utworzy komponent. Jeśli tekst jest dokładną kopią istniejącego komponentu tekstowego, zostanie użyty istniejący komponent.

Oto przykład tworzenia komponentu nagłówka:

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

Usuwanie komponentu z grupy plików

Możesz też usunąć komponent z grupy plików. Pamiętaj jednak, że każda grupa plików musi zawierać minimalną liczbę określonych typów komponentów , aby kampania była prawidłowa.

Oto jak usunąć komponent dodany w poprzednim przykładzie:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Możesz też uzyskać listę komponentów w danej grupie plików za pomocą funkcji 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}'`
);

Wybiera ona nazwę zasobu komponentu jako jego unikalny identyfikator. Możesz też wybrać inne pola, np. asset.type lub asset.text_asset.text, aby jeszcze bardziej zawęzić wyniki. Aby utworzyć własne zapytanie, użyj kreatora zapytań dla tego typu raportu.

Gdy masz już komponent docelowy, wywołaj funkcję remove w grupie plików, aby usunąć komponent z grupy plików:

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