Was sind Bauherren?

Sie verwenden Builder, um eine Entität hinzuzufügen. Jedes übergeordnete Objekt, z. B. Campaign, enthält Methoden zum Abrufen von Builder-Objekten, die Sie zum Hinzufügen von untergeordneten Entitäten verwenden. Um beispielsweise eine Anzeigengruppe zu einer Kampagne hinzuzufügen, rufen Sie die Campaign Methode des Objekts newAdGroupBuilder auf.

Das Builder-Objekt enthält Methoden, mit denen Sie die Eigenschaftswerte der Entität festlegen können. Um beispielsweise die CPC eines Schlüsselworts (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 eingereiht 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 von der build Methode zurückgegeben wird. Beispielsweise gibt AdGroupBuilderAdGroupOperation zurück. Sie können jede der Methoden des Vorgangsobjekts (isSuccessful, , oder getErrors) aufrufen, um zu ermitteln, getResultob 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) mit den Builder- und Operation-Objekten erstellt wird. Du solltest diesen Flow wahrscheinlich nur verwenden, wenn du eine einzelne Entität (oder vielleicht mehrere) erstellst.

    // 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 Scripts Build-Anforderungen in Batches. Wenn Sie die Operationsmethode einer Buildanforderung aufrufen, werden Skripts gezwungen, die Buildanforderungen in der Warteschlange sofort zu verarbeiten, wodurch Leistungsgewinne zunichte gemacht werden. Wenn du mehr als eine Entität erstellst, führe die Vorgangsmethoden nicht in derselben Schleife aus, die du zum Erstellen der Entität verwendest. Dies führt zu schlechter 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();
    }

Gehen Sie nicht so vor

    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 finden Sie eine Liste der Builder.

Nächste Schritte