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 mit nur einem Skript verwalten, anstatt ein ein separates Skript erstellen.

Kontenliste abrufen

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

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

const accountIterator = accountSelector.get();

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

  • Bei mehreren Ebenen können keine Verwaltungskonten abgerufen werden Hierarchie. Es können nur die Kundenkonten ausgewählt werden.
  • Geschlossene, gekündigte und gesperrte Konten werden standardmäßig nicht zurückgegeben. Ich können Sie dieses Verhalten überschreiben, indem Sie withCondition aufrufen und eine andere Filter für customer_client.status.

Der accounts-Aufruf ruft standardmäßig die Liste aller Kundenkonten in der Verwaltungskontohierarchie ab. Sie können die withLimit der Methode ManagedAccountSelector , um die Anzahl der vom Skript abgerufenen Konten zu beschränken. Alternativ können Sie die Konten mit der Methode withIds anhand ihrer Kundennummern 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 mithilfe von des Iterators hasNext und next . Sie müssen die Methode select , um den Ausführungskontext auf ein Kundenkonto umzustellen. Nachdem Sie ein Kundenkonto ausgewählt haben, werden alle weiteren API-Aufrufe auf das Kundenkonto angewendet, 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-Scripts können Sie mithilfe der Methode executeInParallel der Klasse ManagedAccountSelector mehrere Kundenkonten gleichzeitig bearbeiten. Die Methode executeInParallel hat die folgende Signatur:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

Die Methode executeInParallel führt eine von functionName angegebene Funktion für jeden ManagedAccount aus, der mit ManagedAccountSelector übereinstimmt. Sobald alle Konten verarbeitet wurden, wird die Rückruffunktion, sofern sie über optionalCallbackFunctionName angegeben wurde, einmal ausgeführt. Dabei wird eine Liste von ExecutionResult-Objekten als Argument für die weitere Verarbeitung übergeben. Die typische Verwendung wird gezeigt unten:

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 in functionName angegebene Funktion kann optional einen String akzeptieren. Argument (optionalInput) Dieser Parameter kann zur Übergabe einer zusätzlichen -Parameter für alle parallelen Methoden, 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 übergeben möchten, das kontospezifische Einstellungen vornehmen, können Sie sie zunächst mithilfe der Methode 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.
  ...
}

Die mit functionName angegebene Funktion kann auch einen String anstelle eines Objekts zurückgeben, indem JSON.stringify verwendet wird:

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 Objekte. Wenn Sie mit der Funktion einen JSON-String zurückgegeben haben, können Sie ihn konvertieren zurück in ein JavaScript-Objekt mithilfe JSON.parse :

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

Die executeInParallel maximal 50 Zeilen accounts, Daher müssen Sie eigene Einschränkungen vornehmen, um die Anzahl der die vom Skript abgerufen werden. Sie können die Methode withLimit oder withIds der Klasse ManagedAccountSelector verwenden, um die Anzahl der Konten einzuschränken, die Ihr Script abruft.

Zeitlimits für die Ausführung

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