Partager via


Que sont les constructeurs ?

Vous utilisez des générateurs pour ajouter une entité. Chaque objet parent, tel que Campaign, inclut des méthodes permettant d’obtenir des objets de générateur que vous utilisez pour ajouter des entités enfants. Par exemple, pour ajouter un groupe d’annonces à une campagne, vous devez appeler la méthode de l’objet CampaignnewAdGroupBuilder .

L’objet générateur inclut des méthodes que vous utilisez pour définir les valeurs de propriété de l’entité. Par exemple, pour spécifier le CPC d’un mot clé, vous devez utiliser la withCpc méthode . Après avoir défini toutes les valeurs de propriété de l’entité, vous appelez la build méthode pour créer l’entité. Le processus de génération est un processus asynchrone dans lequel la requête est mise en file d’attente avec d’autres demandes de build et traitée dans un lot. Les demandes par lot se terminent avant la fin du script.

Pour déterminer si les demandes de build ont réussi, vous pouvez examiner les journaux ou utiliser l’objet d’opération retourné par la build méthode. Par exemple, AdGroupBuilder renvoie AdGroupOperation. Vous pouvez appeler l’une des méthodes de l’objet d’opération (isSuccessful, , getResultou getErrors) pour déterminer si les scripts ont correctement créé l’entité. Toutefois, il existe des considérations relatives aux performances lors de l’appel de ces méthodes (consultez Considérations sur les performances).

L’exemple suivant montre conceptuellement comment créer un mot clé à l’aide des objets de générateur et d’opération. Vous devez probablement utiliser ce flux uniquement si vous créez une seule entité (ou peut-être quelques-unes).

    // 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`);
        }
    }

Considérations liées aux performances

Afin d’améliorer les performances, Scripts traite les demandes de génération par lots. Si vous appelez la méthode d’opération d’une demande de build, cela force Scripts à traiter immédiatement les demandes de build mises en file d’attente, ce qui annule les gains de performances. Si vous créez plusieurs entités, n’exécutez pas les méthodes d’opération dans la même boucle que celle que vous utilisez pour générer l’entité. Cela entraîne des performances médiocres, car une seule entité à la fois est traitée. Au lieu de cela, créez un tableau des opérations et traitez-les après la boucle de génération.

Procédez comme suit

    // 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();
    }

Fais pas ça

    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();
    }

Voici la liste des générateurs.

Prochaines étapes