Was sind Ersteller?
Sie verwenden Generatoren, um eine Entität hinzuzufügen. Jedes übergeordnete Objekt, z. B. Campaign, enthält Methoden zum Abrufen von Generatorobjekten, die Sie zum Hinzufügen untergeordneter Entitäten verwenden. Wenn Sie z. B. einer Kampagne eine Anzeigengruppe hinzufügen möchten, rufen Sie die Campaign
-Methode des newAdGroupBuilder
Objekts auf.
Das Builder-Objekt enthält Methoden, die Sie zum Festlegen der Eigenschaftswerte der Entität verwenden. Um beispielsweise den CPC eines Schlüsselwort (keyword) anzugeben, verwenden Sie die withCpc
-Methode. Nachdem Sie alle Eigenschaftswerte der Entität festgelegt haben, rufen Sie die build
-Methode auf, um die Entität zu erstellen. Der Buildprozess ist ein asynchroner Prozess, bei dem die Anforderung mit anderen Buildanforderungen in die Warteschlange gestellt und in einem Batch verarbeitet wird. Die Batchanforderungen werden abgeschlossen, bevor das Skript beendet wird.
Um zu ermitteln, ob die Buildanforderungen erfolgreich waren, können Sie sich die Protokolle ansehen oder das Vorgangsobjekt verwenden, das die build
Methode zurückgibt.
AdGroupBuilder gibt beispielsweise AdGroupOperation zurück. Sie können jede der Methoden des Vorgangsobjekts (isSuccessful
, oder getErrors
) aufrufen, um zu bestimmen, getResult
ob Skripts die Entität erfolgreich erstellt haben. Beim Aufrufen dieser Methoden gibt es jedoch Leistungsüberlegungen (siehe Überlegungen zur Leistung).
Das folgende Beispiel zeigt konzeptionell, wie ein Schlüsselwort (keyword) mithilfe des Generators und der Vorgangsobjekte erstellt wird. Sie sollten diesen Flow wahrscheinlich nur verwenden, wenn Sie eine einzelne Entität (oder vielleicht einige) erstellen.
// Gets the first ad group in the account.
var adGroup = AdsApp.adGroups().get().next();
// Use the 'with' methods to specify the keyword's property values.
// The .build() method adds the build request to the build queue.
var keywordOperation = adGroup.newKeywordBuilder()
.withCpc(1.2)
.withText("shirts")
.withFinalUrl("https://www.contoso.com/shirts")
.build();
// Call isSuccessful() to determine if the build succeeded.
// Calling any of the operation object's method processes the
// build request immediately.
if (keywordOperation.isSuccessful()) {
// You only need to call getResult if you need to access
// the new keyword entity.
var keyword = keywordOperation.getResult();
} else {
// Handle the errors.
for (var error of keywordOperation.getErrors()) {
Logger.log(`${error}\n`);
}
}
Überlegungen zur Leistung
Um die Leistung zu verbessern, verarbeitet Skripts Buildanforderungen in Batches. Wenn Sie die Vorgangsmethode einer Buildanforderung aufrufen, erzwingt dies Skripts, die in der Warteschlange eingereihten Buildanforderungen sofort zu verarbeiten, wobei Leistungssteigerungen negiert werden. Wenn Sie mehrere Entitäten erstellen, führen Sie die Vorgangsmethoden nicht in derselben Schleife aus, die Sie zum Erstellen der Entität verwenden. Dies führt zu einer schlechten Leistung, da jeweils nur eine Entität verarbeitet wird. Erstellen Sie stattdessen ein Array der Vorgänge, und verarbeiten Sie sie nach der Buildschleife.
Aktion
// An array to hold the operations, so you
// can process them after all the entities are queued.
var operations = [];
// Create all the new entities.
for (var i = 0; i < keywords.length; i++) {
var keywordOperation = AdsApp.adGroups().get().next()
.newKeywordBuilder()
.withText(keywords[i])
.build();
operations.push(keywordOperation);
}
// Now call the operation method so the build requests
// get processed in batches.
for (var i = 0; i < operations.length; i++) {
var newKeyword = operations[i].getResult();
}
Tun Sie dies nicht
for (var i = 0; i < keywords.length; i++) {
var keywordOperation = AdsApp.adGroups().get().next()
.newKeywordBuilder()
.withText(keywords[i])
.build();
// Don't get results in the same loop that creates
// the entity because Scripts then only processes one
// entity at a time.
var newKeyword = keywordOperation.getResult();
}
Im Folgenden ist die Liste der Generatoren aufgeführt.