Skrypty Google Ads umożliwiają zarządzanie kampaniami Performance Max.
Za pomocą skryptów możesz pobierać kampanie Performance Max, zarządzać grupami plików i generować raporty, ale nie możesz ich tworzyć. Aby wykonać bardziej zaawansowane operacje, zapoznaj się z pozostałą częścią tego przewodnika, w której pokazujemy bardziej ogólne podejście z użyciem mutate
.
Pobieranie kampanii Performance Max
Kampanie Performance Max są dostępne w kolekcji performanceMaxCampaigns
obiektu AdsApp
. Możesz je odzyskać 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 reklamowych, które możesz wyświetlać. Wszystkie kwestie związane z tymi pojęciami w przypadku innych kampanii są obsługiwane automatycznie na podstawie ustawionych przez Ciebie grup plików.
Komponenty i grupy plików
Reklamy z kampanii Performance Max działają na podstawie komponentów, takich jak filmy, obrazy, nagłówki i teksty reklamy – dostarczonych przez Ciebie lub wygenerowanych automatycznie. Pełny przegląd wymaganych typów komponentów znajdziesz w przewodniku po komponentach w kampaniach Performance Max w interfejsie Google Ads API.
Pliki w kampaniach Performance Max są zgrupowane w grupy 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ć z nich komponenty.
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 dodaj utworzony komponent do istniejącej 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 w ostatnim kroku musisz określić typ komponentu. Pełną listę typów komponentó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ć listę do zasobów, na których chcesz wykonać działanie. Pełną listę opcji filtrowania znajdziesz w AssetSelector
dokumentacji referencyjnej.
Na koniec pobierz iterator i iteruj go tak jak w przypadku innych elementów:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
Komponenty tekstowe
Zasoby tekstowe działają nieco inaczej, ponieważ nie musisz tworzyć zasobu z wyprzedzeniem. Wystarczy, że podasz tekst zamiast komponentu, a system automatycznie utworzy komponent. Jeśli tekst jest dokładną kopią istniejącego komponentu tekstowego, zostanie użyty istniejący komponent.
Na przykład tak możesz utworzyć komponent nagłówka:
assetGroup.addAsset('asset text here', 'HEADLINE');
Usuwanie komponentu z grupy plików
Możesz też usunąć komponent z grupy plików, ale pamiętaj, że aby kampania była prawidłowa, musisz mieć minimalną liczbę określonych rodzajów komponentów.
Aby 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}'`
);
Spowoduje to wybranie nazwy zasobu jako unikalnego identyfikatora komponentu. Możesz też wybrać inne pola, np. asset.type
lub asset.text_asset.text
, aby jeszcze bardziej doprecyzować wyniki. Aby utworzyć własne zapytanie, użyj kreatora zapytań dla tego typu raportu.
Gdy uzyskasz docelowy komponent, wywołaj remove
w grupie plików, aby usunąć z niej komponent:
// 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);