Skrypty Ad Managera

AdsManagerApp w skryptach Google Ads pozwala zarządzać kontami połączonymi w ramach Konto menedżera. Możesz zarządzać wszystkich kont reklamodawców za pomocą jednego skryptu, zamiast tworzyć dla każdego konta.

Pobierz listę 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();

Jest kilka ograniczeń dotyczących kont, które można pobrać:

  • Nie można pobrać kont menedżera, jeśli masz konto wielopoziomowe w hierarchii. 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 pobiera listę wszystkich kont klientów w hierarchii domyślnej hierarchii konta menedżera. Za pomocą withLimit funkcji ManagedAccountSelector class, aby ograniczyć liczbę kont pobieranych przez skrypt. Inny wybrać konta według ich identyfikatorów klienta i użyć 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 funkcję functionName w: ManagedAccount że ManagedAccountSelector dopasowania. Po przetworzeniu wszystkich kont funkcja wywołania zwrotnego, jeśli określona przez optionalCallbackFunctionName, jest wykonywana raz, przekazywana lista z ExecutionResult jako argumentu 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 funkcję functionName może opcjonalnie akceptować ciąg znaków (optionalInput). Ten parametr może służyć do przekazywania dodatkowego parametru do wszystkich metod równoległych wywoływanych przez funkcję 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 ustawień konta, możesz je najpierw przekonwertować na ciąg znaków, 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 ciąg JSON, możesz go przekonwertować do obiektu JavaScript za pomocą funkcji JSON.parse :

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

executeInParallel działa z maksymalnie 50 accounts, musisz więc wprowadzić własne ograniczenia, by ograniczyć liczbę pobierane przez skrypt. Aby ograniczyć liczbę kont, które skrypt ma pobierać, możesz użyć metody withLimit lub withIds klasy ManagedAccountSelector.

Limity czasu wykonywania

Na tej stronie znajdziesz informacje, ze szczegółowymi informacjami o limitach czasu wykonywania skryptów w usłudze Ad Manager.