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.
Liste der Konten 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 abrufbaren Konten:
- Verwaltungskonten können nicht abgerufen werden, wenn Sie eine mehrstufige Hierarchie haben. Es können nur die Kundenkonten ausgewählt werden.
- Geschlossene, gekündigte und gesperrte Konten werden standardmäßig nicht zurückgegeben. Dieses Verhalten lässt sich überschreiben, indem du
withCondition
aufrufst und einen anderen Filter fürcustomer_client.status
angibst.
Der accounts
-Aufruf ruft standardmäßig die Liste aller Kundenkonten in der Verwaltungskontohierarchie ab. Mit der Methode withLimit
der Klasse ManagedAccountSelector
können Sie die Anzahl der Konten begrenzen, die Ihr Script abruft. 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 mit den Methoden hasNext
und next
des Iterators durchgehen. Sie müssen die Methode select
verwenden, um den Ausführungskontext zu einem Kundenkonto zu wechseln. 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 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 durch optionalCallbackFunctionName
angegeben wurde, einmal ausgeführt. Dabei wird eine Liste von ExecutionResult
-Objekten als Argument für die weitere Verarbeitung übergeben. Die typische Verwendung ist unten 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 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 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 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
-Objekten an die Callback-Funktion übergeben. Wenn Sie von der Funktion einen JSON-String zurückgegeben haben, können Sie ihn mit der Methode JSON.parse
wieder in ein JavaScript-Objekt umwandeln:
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 Ihr Script abruft. 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.