Kampanie maksymalizujące skuteczność

Skrypty Google Ads umożliwiają pewne zarządzanie kampaniami Performance Max. Za pomocą skryptów możesz pobierać kampanie Performance Max, zarządzać grupami komponentów i generować raporty, ale nie możesz używać skryptów do tworzenia kampanii Performance Max.

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 odróżnieniu od innych typów kampanii kampanie Performance Max nie mają grup reklam ani obiektów reklam, które możesz zobaczyć. Wszystkie elementy związane z tymi pojęciami są przetwarzane automatycznie na podstawie ustawionych przez Ciebie grup plików.

Komponenty i ich grupy

Reklamy z kampanii Performance Max wykorzystują zasoby dostarczone przez Ciebie lub wygenerowane automatycznie, takie jak filmy, obrazy, nagłówki i teksty reklamy. Pełne omówienie wymaganych komponentów znajdziesz w przewodniku po komponentach kampanii Performance Max w interfejsie Google Ads API.

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

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

Pamiętaj, że w ostatnim kroku musisz określić typ zasobu. Pełną listę typów komponentów znajdziesz w dokumentacji interfejsu Google Ads API

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

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

Następnie za pomocą filtra withCondition możesz zawęzić wyniki do komponentów, na których chcesz działać. Pełną listę opcji filtrowania znajdziesz w dokumentacji dotyczącej AssetSelector.

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

Zasoby tekstowe działają trochę inaczej, ponieważ nie trzeba ich tworzyć wcześniej. Wystarczy, że podasz tekst, a system automatycznie utworzy komponent. Jeśli tekst jest duplikatem istniejącego zasobu tekstowego, zostanie on użyty ponownie.

Aby np. utworzyć komponent z nagłówkiem:

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

Usuń komponent z grupy plików

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

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

assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');

Listę zasobów w danej grupie komponentów możesz też wyświetlić 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}'`
);

Spowoduje to wybranie nazwy zasobu zasobu jako jego unikalnego identyfikatora. Możesz też wybrać inne pola, takie jak asset.type lub asset.text_asset.text, aby zawęzić wyniki. Aby utworzyć własne zapytanie, użyj kreatora zapytań dla tego typu raportu.

Gdy uzyskasz zasób docelowy, wywołaj w grupie komponentów metodę remove, aby usunąć go z grupy:

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

Raporty

Kampanie Performance Max są raportowane w zasobie campaign razem z innymi typami kampanii. Na początek możesz użyć takiego:

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

Nie zaznaczaj żadnych pól ad_group, ponieważ kampanie Performance Max nie zawierają żadnych grup reklam, więc żadna z nich nie zostanie zwrócona. Poza tym asset_group nie można podzielić na segmenty. Więcej informacji o raportowaniu znajdziesz w przewodniku po raportach.

Możesz też generować raporty bezpośrednio na temat grup plików. Więcej informacji, jak to zrobić, znajdziesz w tym przewodniku po interfejsie Google Ads API. Aby uzyskać te same wyniki, możesz dowolne z widocznych tam zapytań uruchomić je za pomocą metody AdsApp.search w skryptach Google Ads.