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 podrzędne na koncie menedżera możesz pobrać za pomocą metody
accounts
, 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 odzyskać:
- Nie można pobrać kont menedżera, jeśli masz hierarchię wielopoziomową. Można wybrać tylko konta klientów.
- Domyślnie zamknięte, anulowane i zawieszone konta nie są zwracane. Możesz zastąpić to działanie, wywołując
withCondition
i określając inny filtr dlacustomer_client.status
.
Wywołanie accounts
domyślnie pobiera listę wszystkich kont klientów w hierarchii konta menedżera. Możesz użyć metody
withLimit
klasy
ManagedAccountSelector
, aby ograniczyć liczbę kont pobieranych przez skrypt. Inną opcją jest wybranie kont według identyfikatorów klientów za pomocą metody withIds
:
// 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 iteratora hasNext
i next
. Aby przełączyć kontekst wykonania na konto klienta, musisz użyć metody
select
. Po wybraniu konta klienta wszystkie kolejne 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 działanie na wielu kontach klientów za pomocą metody
executeInParallel
klasy
ManagedAccountSelector
. Metoda executeInParallel
ma następujący podpis:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Metoda executeInParallel
wykonuje funkcję określoną przez functionName
na każdym
ManagedAccount
pasującym do
ManagedAccountSelector
. Po przetworzeniu wszystkich kont funkcja wywołania zwrotnego, jeśli została określona przez optionalCallbackFunctionName
, jest wykonywana raz i przekazuje listę obiektów ExecutionResult
jako argument do dalszego przetwarzania. Typowe użycie jest pokazane 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 w postaci 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ą metody JSON.stringify
:
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 funkcji wywołania zwrotnego w postaci listy obiektów ExecutionResult
. Jeśli funkcja zwróciła ciąg znaków w formacie JSON, możesz przekonwertować go z powrotem na obiekt JavaScript 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 wdrożyć własne ograniczenia, aby ograniczyć liczbę kont pobieranych przez skrypt. Możesz użyć metody withLimit
lub withIds
metody ManagedAccountSelector
klasy, aby ograniczyć liczbę kont pobieranych przez skrypt.
Limity czasu wykonywania
Szczegółowe informacje o limitach czasu wykonywania skryptów Menedżera reklam znajdziesz w dokumentacji limitów.