Zugriff mit mehreren Konten
Wenn Sie über mehrere Konten verfügen oder Konten für andere verwalten, beginnt alles mit dem AccountsApp-Objekt . AccountsApp ist das Objekt der obersten Ebene, mit dem Sie die Liste der Konten abrufen, auf die Sie Zugriff haben, und um das zu verwaltende Konto auszuwählen. Nachdem Sie das Konto abgerufen und ausgewählt haben, wechseln Sie zur Verwendung des AdsApp-Objekts , um auf die Entitäten des Kontos zuzugreifen.
Hinweis
Verwenden Sie für Skripts mit mehreren Konten den Skript-Editor, auf den über die Kontenzusammenfassung in der Microsoft Advertising-Webanwendung zugegriffen wird. Wenn auf der Benutzeroberfläche keine Kontenzusammenfassung angezeigt wird, verwenden Sie den Skript-Editor für mehrere Konten nicht.
Um über die Kontenzusammenfassung auf den Skript-Editor zuzugreifen, klicken Sie im linken Bereich auf Massenvorgänge . Klicken Sie dann unter Skripts auf Skripts erstellen und verwalten.
Auflisten der Konten, auf die Sie Zugriff haben
Um alle Konten aufzulisten, auf die Sie Zugriff haben, rufen Sie die accounts-Methode auf. Die Methode gibt ein BingAdsAccountSelector-Objekt zurück, mit dem Sie die Liste der Konten filtern können. Informationen zur Verwendung von Selektoren zum Filtern von Listen finden Sie unter Verwenden von Selektoren.
Im folgenden Beispiel werden alle Konten zurückgegeben, auf die Sie Zugriff haben.
function main() {
var accounts = AccountsApp.accounts()
.get();
while (accounts.hasNext()) {
var account = accounts.next();
Logger.log(`Account ID: ${account.getAccountId()}
Account name: ${account.getName()}
Account number: ${account.getAccountNumber()}
Customer ID: ${account.getCustomerId()}
Currency code: ${account.getCurrencyCode()}
Time zone: ${account.getTimeZone()}\n\n`);
}
}
Paralleles Ausführen einer Funktion für jedes Konto
Wenn Sie mehrere Konten parallel bearbeiten möchten, rufen Sie die -Methode des SelektorsexecuteInParallel()
auf. Im Folgenden finden Sie die Methoden, die executeInParallel()
Sie aufrufen können.
executeInParallel(string functionName, string optionalCallbackFunctionName)
Geben Sie den Namen der Funktion an, die Scripts für jedes Konto aufruft, das der Selektor zurückgibt. Die Funktion gibt möglicherweise einen Wert als Zeichenfolge zurück. Um ein komplexes Objekt zurückzugeben, verwenden Sie die JSON.stringify-Methode, um das Objekt in eine Zeichenfolge zu konvertieren. Anschließend können Sie die JSON.parse-Methode verwenden, um die Zeichenfolge wieder in ein Objekt zu konvertieren.
Wenn Ihre Funktion einen Wert zurückgibt, müssen Sie eine Rückruffunktion angeben, um die Rückgabewerte zu erfassen. Nachdem die Funktion für alle ausgewählten Konten ausgeführt wurde, ruft Scripts die optionale Rückruffunktion auf. Die Rückgabewerte werden als Array von ExecutionResult-Objekten übergeben.
executeInParallel(string functionName, string optionalCallbackFunctionName, string optionalInput)
Geben Sie den Namen der Funktion an, die Scripts für jedes Konto aufruft, das der Selektor zurückgibt. Sie können eine optionale Eingabezeichenfolge angeben, die Scripts an die Funktion übergibt. Um ein komplexes Objekt zu übergeben, verwenden Sie die JSON.stringify-Methode, um das Objekt in eine Zeichenfolge zu konvertieren. Anschließend können Sie die JSON.parse-Methode innerhalb der Funktion verwenden, um die Zeichenfolge wieder in ein Objekt zu konvertieren.
Die Funktion gibt möglicherweise einen Wert als Zeichenfolge zurück. Um ein komplexes Objekt zurückzugeben, verwenden Sie die JSON.stringify-Methode, um das Objekt in eine Zeichenfolge zu konvertieren. Anschließend können Sie die JSON.parse-Methode verwenden, um die Zeichenfolge wieder in ein Objekt zu konvertieren.
Wenn Ihre Funktion einen Wert zurückgibt, müssen Sie eine Rückruffunktion angeben, um die Rückgabewerte zu erfassen. Nachdem die Funktion für alle ausgewählten Konten ausgeführt wurde, ruft Scripts die optionale Rückruffunktion auf. Die Rückgabewerte werden als Array von ExecutionResult-Objekten übergeben.
Sie müssen die Anzahl der Konten auf 50 beschränken, andernfalls schlägt der Aufruf fehl, wenn der Selektor mehr als 50 zurückgibt. Um die Anzahl von Konten zu begrenzen, können Sie die withLimit()
Methoden , withIds()
und withAccountNumbers()
verwenden.
Das folgende Beispiel zeigt ein einfaches Beispiel, in dem eine Funktion für jedes Konto ausgeführt wird, für das letzte Woche eine Klickrate von weniger als 5 % aufgetreten ist. Im Beispiel wird die withLimit()
-Methode verwendet, um sicherzustellen, dass der Aufruf den Grenzwert von 50 Konten nicht überschreitet.
function main() {
// Select the accounts to process.
var accounts = AccountsApp.accounts()
.withLimit(50)
.withCondition('Ctr < 0.05')
.forDateRange('LAST_WEEK')
.executeInParallel('bump', 'resultsHandler');
}
function bump() {
var account = AdsApp.currentAccount();
// Do something with the entities in the account.
Logger.log(`Processing account: ${account.getAccountId()} (${account.getName()})`);
// Return a value that's processed by resultsHandler(). If
// the function returns a value, it must be a string. To return
// a complex object, use JSON.stringify(object) to return the
// object as a string.
return account.getAccountId();
}
// Handles all return values from the bump() function after the
// function completes for all accounts.
function resultsHandler(results) {
for (var result of results) {
if (result.getStatus() === 'OK') {
value = result.getReturnValue();
}
}
}
Ändern des Kontos, das scripts verarbeitet
Bis Sie ein zu verarbeitende Konto ausgewählt haben, können Sie keine der AdsApp-Methoden aufrufen, um die Entitätsdaten des Kontos abzurufen. Um ein Konto auszuwählen, verwenden Sie die Select-Methode von AccountsApp.
Zuerst müssen Sie jedoch die Kontomethode aufrufen, um die Konten auszuwählen, die Sie verarbeiten möchten. Informationen zur Verwendung von accounts()
zum Filtern der Liste von Konten finden Sie unter Auflisten der Konten, auf die Sie Zugriff haben.
Rufen Sie nach dem Abrufen eines Kontos die select()
-Methode auf, um das Konto zum aktuellen Konto zu machen. Im folgenden Beispiel wird dieser Prozess veranschaulicht.
function main() {
// This call logs null. Before using any
// of the AdsApp methods, you must first
// select an account to process.
Logger.log(AdsApp.currentAccount());
// Select the accounts to process
var accounts = AccountsApp.accounts()
.withIds(['123', '456', '789'])
.get();
while (accounts.hasNext()) {
AccountsApp.select(accounts.next());
// AdsApp is now set to the current account.
// Do something with the account's entities.
}
}