Klasa AdsManagerApp
w skryptach Google Ads umożliwia zarządzanie kontami połączonymi z Twoim 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 odzyskać, korzystając z 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ć:
- Konta menedżera nie można pobrać, 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 zachowanie, wywołując funkcję
withCondition
i podając inny filtr dla parametrucustomer_client.status
.
Wywołanie accounts
domyślnie pobiera listę wszystkich kont klientów w hierarchii konta menedżera. Aby ograniczyć liczbę kont, które pobiera skrypt, możesz użyć metody withLimit
klasy ManagedAccountSelector
. 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 przejrzeć za pomocą metody 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 wyraźnie innego:
// 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 campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
Praca równoległa na kontach
Dzięki skryptom Google Ads możesz równolegle wykonywać operacje na wielu kontach klientów, korzystając z metody executeInParallel
klasy ManagedAccountSelector
. Metoda executeInParallel
ma następujący podpis:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Metoda executeInParallel
wykonuje funkcję określoną przez functionName
w przypadku każdego elementu ManagedAccount
, który spełnia warunek ManagedAccountSelector
. Po przetworzeniu wszystkich kont funkcja wywołania zwrotnego, jeśli została określona przez parametr optionalCallbackFunctionName
, jest wykonywana raz, przekazując jako argument listę obiektów ExecutionResult
do dalszego przetwarzania. Poniżej przedstawiono typowe zastosowanie:
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 typu string (optionalInput
). Można go wykorzystać do przekazania 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 dotyczące 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 zwracać ciąg znaków zamiast obiektu za pomocą funkcji JSON.stringify
:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Zwracane wartości są przekazywane do funkcji wywołania zwrotnego na liście obiektów ExecutionResult
. Jeśli funkcja zwróciła ciąg znaków w formacie JSON, możesz go przekonwertować 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, które pobiera skrypt. Aby ograniczyć liczbę kont, które skrypt ma pobierać, możesz użyć metody withLimit
lub withIds
klasy ManagedAccountSelector
.
Limity czasu wykonywania
Szczegółowe informacje o limitach czasu wykonywania skryptów w usłudze Ad Manager znajdziesz na tej stronie.