Kampanie Performance Max korzystające z AdsApp

Skrypty Google Ads umożliwiają zarządzanie kampaniami Performance Max . Za pomocą skrypty do pobierania kampanii Performance Max, zarządzania grupami plików raportów; nie możesz jednak używać skryptów do tworzenia kampanii Performance Max. Do do bardziej zaawansowanych operacji, można zapoznać się z pozostałą częścią tego przewodnika, przedstawia bardziej ogólne podejście związane z użyciem atrybutu mutate.

Pobieranie kampanii Performance Max

Kampanie Performance Max są dostępne w performanceMaxCampaigns kolekcja AdsApp obiektu. 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 Performance Max kampanie Performance Max nie zawierają reklam grupy lub obiekty reklam, które widzisz, wszystkiego, co wiąże się z tymi pojęciami, inne kampanie są obsługiwane automatycznie na podstawie grup plików, ustawiony.

Komponenty i grupy plików

Reklamy z kampanii Performance Max kończą się zasobów, takich jak filmy, obrazów, nagłówków i tekstów reklamy – przesłanych przez Ciebie lub generowane automatycznie. Pełny przegląd rodzajów komponentów wymagane, zapoznaj się z informacjami o komponentach z kampaniami Performance Max dotyczącymi interfejsu Google Ads API .

Komponenty kampanii Performance Max są połączone w grupę plików, a każda kampania Performance Max musi mieć co najmniej 1 grupę plików. Ty nie można tworzyć tych grup plików bezpośrednio w skryptach, ale można dodawać usunąć komponenty z wcześniejszej grupy plików.

Dodaj komponent do grupy plików

Najpierw utwórz zasób:

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 za pomocą utworzonego właśnie komponentu dodaj go do dotychczasowej grupy komponentó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 musisz określić typ zasobu w ostatnim kroku. Na stronie pełna lista typów komponentów w interfejsie Google Ads API. dokumentacja

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

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

Następnie użyj filtra withCondition, aby zawęzić zakres do zasobów, które chcesz na których działa system. Zobacz AssetSelector dokumentację zawierającą pełną listę opcji filtrowania.

Na koniec pobierz iterator i wykonaj iterację tak samo jak w przypadku innych elementów:

const assetIterator = assetSelector.get();

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

Komponenty tekstowe

Komponenty tekstowe działają trochę inaczej – nie trzeba tworzyć komponentu z wyprzedzeniem. Wystarczy, że podasz tekst zamiast zasobu, a system automatycznie tworzą zasób. Jeśli tekst jest dokładnym duplikatem istniejący komponent tekstowy zostanie ponownie użyty.

Aby np. utworzyć komponent nagłówka:

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

Usuń komponent z grupy plików

Możesz też usunąć komponent z grupy plików. pamiętaj jednak, musisz mieć minimalną liczbę określonych rodzajów zasoby aby kampania była prawidłowa.

Aby usunąć komponent dodany w poprzednim przykładzie:

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Listę zasobów w danej grupie plików możesz też wyświetlić, korzystając z przycisku search. funkcja:

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

Spowoduje to wybranie nazwy zasobu zasobu jako jego unikalnego identyfikatora. Możesz wybierz również inne pola, np. asset.type lub asset.text_asset.text, aby jeszcze bardziej sprecyzować wyniki. Użyj kreatora zapytań do tworzenia tego raportu wpisz, aby utworzyć do swojego zapytania.

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

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