Die
AdsManagerApp
Klasse in Google Ads-Skripts können Sie Konten verwalten, die mit Ihrem
Verwaltungskontoverknüpft sind. Sie können alle Ihre Werbekonten über ein einziges Skript verwalten, anstatt für jedes Konto ein separates Skript zu erstellen.
Liste der Konten abrufen
Sie können Konten unter einem Verwaltungskonto mit der
accounts
Methode abrufen, z. B.:
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Für die abzurufenden Konten gelten einige Einschränkungen:
- Verwaltungskonten können nicht abgerufen werden, wenn Sie eine mehrstufige Hierarchie haben. Es können nur Kundenkonten ausgewählt werden.
- Standardmäßig werden geschlossene, gekündigte und gesperrte Konten nicht zurückgegeben. Sie können dieses Verhalten überschreiben, indem Sie
withConditionaufrufen und einen anderen Filter fürcustomer_client.statusangeben.
Mit dem Aufruf accounts wird standardmäßig die Liste aller Kundenkonten in der Verwaltungskontohierarchie abgerufen. Mit der
withLimit
Methode der
ManagedAccountSelector
Klasse 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
withIds
Methode 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
select
Methode 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 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 Search and Display campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
Parallel mit Konten arbeiten
Mit Google Ads-Skripts können Sie mit der
executeInParallel
Methode der
ManagedAccountSelector
Klasse parallel mit mehreren Kundenkonten arbeiten. Die Methode executeInParallel hat die folgende Signatur:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
Die executeInParallel Methode führt eine Funktion aus, die durch functionName
für jedes
ManagedAccount
angegeben wird, das mit dem
ManagedAccountSelector
übereinstimmt. Sobald alle Konten verarbeitet wurden, wird die Callback-Funktion, falls
durch optionalCallbackFunctionName angegeben, einmal ausgeführt. Dabei wird eine Liste
von
ExecutionResult
Objekten als Argument für die weitere Verarbeitung übergeben. Die typische Verwendung sieht so aus:
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 String-Argument (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
JSON.stringify
Methode 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 durch functionName angegebene Funktion kann auch einen String anstelle eines
Objekts über
JSON.stringify 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
JSON.parse
Methode 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
executeInParallel
Methode kann maximal 50
accountsverarbeiten. Sie müssen daher eigene Einschränkungen implementieren, um die Anzahl der
Konten zu begrenzen, die von Ihrem Skript abgerufen werden. Mit der
ManagedAccountSelector
Klasse können Sie mit der
withLimit
oder
withIds
Methode 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 Google Ads-Verwaltungskonto-Skripts finden Sie in der Dokumentation zu den Limits.