Ads Manager-Skripts

Mit der Klasse AdsManagerApp in Google Ads-Skripts können Sie Konten verwalten, die über Ihr Verwaltungskonto verknüpft sind. Sie können alle Konten von Werbetreibenden mit einem einzigen Skript verwalten, anstatt für jedes Konto ein separates Skript zu erstellen.

Kontoliste abrufen

Mit der Methode accounts können Sie Konten unter einem Verwaltungskonto abrufen. Beispiel:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

Für Konten, die abgerufen werden können, gelten einige Einschränkungen:

  • Verwaltungskonten können nicht abgerufen werden, wenn Sie eine mehrstufige Hierarchie haben. Nur die Kundenkonten können ausgewählt werden.
  • Standardmäßig werden geschlossene, aufgelöste und gesperrte Konten nicht zurückgegeben. Sie können dieses Verhalten überschreiben, indem Sie withCondition aufrufen und einen anderen Filter für customer_client.status angeben.

Mit dem Aufruf accounts wird standardmäßig die Liste aller Kundenkonten in der Verwaltungskontohierarchie abgerufen. Mit der Methode withLimit der Klasse ManagedAccountSelector können Sie die Anzahl der vom Skript abgerufenen Konten einschränken. Eine weitere Möglichkeit besteht darin, die Konten mit der Methode withIds nach ihren Kundennummern auszuwählen:

// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
    .withIds(['123-456-7890', '234-567-8901', '345-678-9012']);

An Kundenkonten arbeiten

Nachdem Sie die Kundenkonten abgerufen haben, können Sie sie mit den Methoden hasNext und next des Iterators iterieren. Sie müssen die Methode select verwenden, um den Ausführungskontext auf ein Kundenkonto umzustellen. Nachdem Sie ein Kundenkonto ausgewählt haben, gelten alle weiteren API-Aufrufe für das Kundenkonto, bis Sie explizit ein anderes Konto auswählen:

// 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
  ...
}

Parallel an Konten arbeiten

Mit Google Ads-Skripts können Sie mit der Methode executeInParallel der Klasse ManagedAccountSelector parallel an mehreren Kundenkonten arbeiten. Die Methode executeInParallel hat die folgende Signatur:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Die Methode executeInParallel führt für jedes ManagedAccount, mit dem die ManagedAccountSelector übereinstimmt, eine durch functionName angegebene Funktion aus. Nachdem alle Konten verarbeitet wurden, wird die Callback-Funktion, sofern durch optionalCallbackFunctionName angegeben, einmal ausgeführt. Dabei wird eine Liste mit ExecutionResult-Objekten als Argument für die weitere Verarbeitung übergeben. Die typische Verwendung ist im Folgenden dargestellt:

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
    ...
  }
}

Die von functionName angegebene Funktion kann optional ein Stringargument (optionalInput) akzeptieren. Mit diesem Parameter kann an alle von executeInParallel aufgerufenen parallelen Methoden ein zusätzlicher Parameter übergeben werden:

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.
  ...
}

Wenn Sie ein JavaScript-Konfigurationsobjekt übergeben möchten, das kontospezifische Einstellungen enthält, können Sie es zuerst mithilfe der Methode JSON.stringify in einen String konvertieren:

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.
  ...
}

Die in functionName angegebene Funktion kann auch über JSON.stringify einen String anstelle eines Objekts zurückgeben:

function processClientAccount() {
  ...
  const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
  return JSON.stringify(jsonObj);
}

Die zurückgegebenen Werte werden in einer Liste von ExecutionResult-Objekten an die Callback-Funktion übergeben. Falls mit der Funktion ein JSON-String zurückgegeben wird, können Sie ihn mithilfe der Methode JSON.parse wieder in ein JavaScript-Objekt konvertieren:

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

Bei der Methode executeInParallel sind maximal 50 accounts möglich. Sie müssen also eigene Einschränkungen implementieren, um die Anzahl der vom Skript abgerufenen Konten zu begrenzen. Mit der Methode withLimit oder withIds der Klasse ManagedAccountSelector können Sie die Anzahl der vom Skript abgerufenen Konten einschränken.

Zeitlimits für die Ausführung

Auf dieser Seite finden Sie Informationen zu den Zeitlimits für die Ausführung von Ads Manager-Skripts.