Ads Manager-Skripts

Mit der Klasse AdsManagerApp in Google Ads-Scripts können Sie Konten verwalten, die mit Ihrem Verwaltungskonto verknüpft sind. Sie können alle Ihre Werbetreibendenkonten über ein einziges Script verwalten, anstatt für jedes Konto ein separates Script zu erstellen.

Kontoliste abrufen

Sie können Konten unter einem Verwaltungskonto mit der Methode accounts abrufen, z. B.:

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

const accountIterator = accountSelector.get();

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

  • Verwaltungskonten können nicht abgerufen werden, wenn Sie eine mehrstufige Hierarchie haben. Es können nur die Kundenkonten ausgewählt werden.
  • Standardmäßig werden geschlossene, gekündigte 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 accounts-Aufruf wird standardmäßig die Liste aller Kundenkonten in der Verwaltungskontohierarchie abgerufen. Mit der Methode withLimit der Klasse ManagedAccountSelector können Sie die Anzahl der Konten begrenzen, die von Ihrem Skript abgerufen werden. Alternativ können Sie die Konten anhand ihrer Kundennummern mit der Methode withIds auswählen:

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

Mit Kundenkonten arbeiten

Nachdem Sie die Kundenkonten abgerufen haben, können Sie sie mit den Methoden hasNext und next des Iterators durchlaufen. Sie müssen die Methode select verwenden, um den Ausführungskontext zu einem Kundenkonto zu wechseln. Nachdem Sie ein Kundenkonto ausgewählt haben, gelten alle weiteren API-Aufrufe für dieses Konto, 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 Search and Display campaigns under the client account
  const campaignIterator = AdsApp.campaigns().get();

  // Operate on client account
  ...
}

Gleichzeitig an Konten arbeiten

Mit Google Ads-Scripts können Sie mehrere Kundenkonten parallel bearbeiten. Dazu verwenden Sie die Methode executeInParallel der Klasse ManagedAccountSelector. Die Methode executeInParallel hat die folgende Signatur:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Die Methode executeInParallel führt eine Funktion aus, die durch functionName angegeben wird, für jedes ManagedAccount, das mit dem ManagedAccountSelector übereinstimmt. Sobald alle Konten verarbeitet wurden, wird die Callback-Funktion, sofern sie durch optionalCallbackFunctionName angegeben ist, einmal ausgeführt. Dabei wird eine Liste von ExecutionResult-Objekten als Argument für die weitere Verarbeitung übergeben. Die typische Verwendung ist hier 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 durch functionName angegebene Funktion kann optional ein Stringargument (optionalInput) akzeptieren. Mit diesem Parameter kann ein zusätzlicher Parameter an alle parallelen Methoden übergeben werden, die von executeInParallel aufgerufen 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 mit kontospezifischen Einstellungen übergeben möchten, können Sie es zuerst mit der Methode JSON.stringify in einen String umwandeln:

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 mit functionName angegebene Funktion kann über JSON.stringify auch 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. Wenn Sie einen JSON-String aus der Funktion zurückgegeben haben, können Sie ihn mit 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());
  }
}

Die Methode executeInParallel funktioniert mit maximal 50 accounts. Sie müssen also eigene Einschränkungen implementieren, um die Anzahl der Konten zu begrenzen, die von Ihrem Skript abgerufen werden. Mit der Methode withLimit oder withIds der Klasse ManagedAccountSelector können Sie die Anzahl der Konten begrenzen, die von Ihrem Skript abgerufen werden.

Zeitlimits für die Ausführung

Weitere Informationen zu den Zeitlimits für die Ausführung von Ads Manager-Scripts finden Sie in der Dokumentation zu den Limits.