Klasa
AdsManagerApp
w skryptach Google Ads umożliwia zarządzanie kontami połączonymi z
kontem menedżera. Możesz zarządzać wszystkimi kontami reklamodawców za pomocą jednego skryptu, zamiast tworzyć osobny skrypt dla każdego konta.
Pobieranie listy kont
Konta na koncie menedżera możesz pobrać za pomocą
accounts
metody, na przykład:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Istnieją pewne ograniczenia dotyczące kont, które można pobrać:
- Nie można pobrać kont menedżera, jeśli masz hierarchię wielopoziomową. Można wybrać tylko konta klientów.
- Domyślnie nie są zwracane konta zamknięte, anulowane i zawieszone. Możesz zastąpić to działanie, wywołując
withConditioni określając inny filtr dlacustomer_client.status.
Domyślnie wywołanie accounts pobiera listę wszystkich kont klientów w hierarchii konta menedżera. Aby ograniczyć liczbę kont pobieranych przez skrypt, możesz użyć
withLimit
metody klasy
ManagedAccountSelector. Inną
opcją jest wybranie kont według ich identyfikatorów klienta za pomocą
withIds
metody:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Praca na kontach klientów
Po pobraniu kont klientów możesz je iterować za pomocą
metod
hasNext
i
next
iteratora. Aby przełączyć kontekst wykonania na konto klienta, musisz użyć metody
select. Po wybraniu konta klienta wszystkie dalsze wywołania interfejsu API będą dotyczyć tego konta, dopóki nie wybierzesz innego konta:
// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();
// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds
// Iterate through the list of accounts
for (const account of accountIterator) {
// Select the client account.
AdsManagerApp.select(account);
// Select Search and Display campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
Równoległa praca na kontach
Skrypty Google Ads umożliwiają równoległe wykonywanie operacji na wielu kontach klientów za pomocą metody
executeInParallel
klasy
ManagedAccountSelector. Metoda executeInParallel ma następującą sygnaturę:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Metoda executeInParallel wykonuje funkcję określoną przez functionName
na każdym
ManagedAccount
który pasuje do
ManagedAccountSelector. Gdy wszystkie konta zostaną przetworzone, wywołanie zwrotne, jeśli zostało określone przez optionalCallbackFunctionName, jest wykonywane raz, a jako argument przekazywana jest lista obiektów ExecutionResult do dalszego przetwarzania. Typowe użycie pokazano tutaj:
function main() {
const accountSelector = AdsManagerApp.accounts()
.withLimit(50)
.withCondition('customer_client.currency_code = "USD"');
accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}
function processClientAccount() {
const clientAccount = AdsApp.currentAccount();
// Process your client account here.
...
// optionally, return a result, as text.
return "";
}
function afterProcessAllClientAccounts(results) {
for (const result of results) {
// Process the result further
...
}
}
Funkcja określona przez functionName może opcjonalnie przyjmować argument ciągu znaków (optionalInput). Ten parametr może służyć do przekazywania dodatkowego parametru do wszystkich metod równoległych wywoływanych przez executeInParallel:
function main() {
const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}
function processClientAccount(sharedParameter) {
// Process your client account here.
...
}
Jeśli chcesz przekazać obiekt konfiguracji JavaScript, który zawiera
ustawienia specyficzne dla konta, możesz najpierw przekonwertować go na ciąg znaków za pomocą
JSON.stringify
metody:
function main() {
...
const accountFlags = {
'1234567890': {
'label': 'Brand 1 campaigns',
},
'3456787890': {
'label': 'Brand 2 campaigns',
}
};
accountSelector.executeInParallel("processClientAccount", null,
JSON.stringify(accountFlags));
...
}
function processClientAccount(sharedParameter) {
const accountFlags = JSON.parse(sharedParameter);
// Process your client account here.
...
}
Funkcja określona przez functionName może też zwracać ciąg znaków zamiast obiektu za pomocą
JSON.stringify:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Zwrócone wartości są przekazywane do wywołania zwrotnego w postaci listy
ExecutionResult
obiektów. Jeśli funkcja zwróciła ciąg znaków JSON, możesz go przekonwertować z powrotem na obiekt w JavaScripcie za pomocą metody
JSON.parse:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
Metoda
executeInParallel
działa na maksymalnie 50
accounts,
więc musisz zaimplementować własne ograniczenia, aby ograniczyć liczbę
kont pobieranych przez skrypt. Aby ograniczyć liczbę kont pobieranych przez skrypt, możesz użyć metody
withLimit
lub
withIds
klasy
ManagedAccountSelector.
Limity czasu wykonania
Szczegółowe informacje o limitach czasu wykonania skryptów Ad Managera znajdziesz w dokumentacji dotyczącej limitów.