Skrypty Ad Managera

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 dla customer_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 hasNextnext. 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.