Skrypty Ad Managera

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 parametru customer_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.