Comparteix a través de


¿Qué son los generadores?

Los generadores se usan para agregar una entidad. Cada objeto primario, como Campaign, incluye métodos para obtener objetos de generador que se usan para agregar entidades secundarias. Por ejemplo, para agregar un grupo de anuncios a una campaña, llamaría al Campaign método del newAdGroupBuilder objeto.

El objeto builder incluye métodos que se usan para establecer los valores de propiedad de la entidad. Por ejemplo, para especificar el CPC de una palabra clave, usaría el withCpc método . Después de establecer todos los valores de propiedad de la entidad, llamaría al build método para crear la entidad. El proceso de compilación es un proceso asincrónico en el que la solicitud se pone en cola con otras solicitudes de compilación y se procesa en un lote. Las solicitudes por lotes se completarán antes de que finalice el script.

Para determinar si las solicitudes de compilación se realizaron correctamente, puede examinar los registros o puede usar el objeto de operación que devuelve el build método. Por ejemplo, AdGroupBuilder devuelve AdGroupOperation. Puede llamar a cualquiera de los métodos del objeto de operación (isSuccessful, getResulto getErrors) para determinar si los scripts crearon correctamente la entidad. Pero hay consideraciones de rendimiento al llamar a estos métodos (consulte Consideraciones de rendimiento).

En el ejemplo siguiente se muestra conceptualmente cómo crear una palabra clave mediante los objetos builder y operation. Probablemente debería usar este flujo solo si va a crear una sola entidad (o quizás algunas).

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

Consideraciones de rendimiento

Para mejorar el rendimiento, Scripts procesa solicitudes de compilación en lotes. Si llama al método de operación de una solicitud de compilación, obliga a scripts a procesar las solicitudes de compilación en cola inmediatamente, lo que niega las mejoras de rendimiento. Si va a crear más de una entidad, no ejecute los métodos de operación en el mismo bucle que usa para compilar la entidad. Esto da lugar a un rendimiento deficiente porque solo se procesa una entidad a la vez. En su lugar, cree una matriz de las operaciones y procese después del bucle de compilación.

Haga esto

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

No hagas esto

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

A continuación se muestra la lista de generadores.

Pasos siguientes