Compiladores

Los objetos Builder son la forma estándar de crear entidades en las secuencias de comandos de Google Ads. Te permiten crear una entidad de Google Ads de forma síncrona o asíncrona. También puedes verificar si la operación se realizó correctamente o no, y tomar las medidas adecuadas según el resultado de la operación. En el siguiente fragmento de código, se muestra cómo crear una palabra clave con un objeto Builder.

// Retrieve your ad group.
let adGroup = AdsApp.adGroups().get().next();

// Create a keyword operation.
let keywordOperation = adGroup.newKeywordBuilder()
    .withCpc(1.2)
    .withText("shoes")
    .withFinalUrl("http://www.example.com/shoes")
    .build();

// Optional: examine the outcome. The call to isSuccessful()
// will block until the operation completes.
if (keywordOperation.isSuccessful()) {
  // Get the result.
  let keyword = keywordOperation.getResult();
} else {
  // Handle the errors.
  let errors = keywordOperation.getErrors();
}

Cualquier entidad que se pueda crear con las secuencias de comandos de Google Ads lo hace con este patrón de objeto Builder.

Consideraciones de rendimiento

De forma predeterminada, las secuencias de comandos de Google Ads ejecutan sus operaciones de forma asíncrona. Esto permite que las secuencias de comandos agrupen tus operaciones como lotes y logren un alto rendimiento. Sin embargo, llamar a los métodos de Operation como isSuccessful() y getResult() obliga a las secuencias de comandos de Google Ads a vaciar su lista de operaciones pendientes y, por lo tanto, puede generar un rendimiento bajo. En su lugar, crea un array para contener las operaciones y, luego, itera a través de ese array para recuperar los resultados.

Rendimiento bajo Rendimiento bueno
for (let i = 0; i < keywords.length; i++)
  let keywordOperation = adGroup
    .newKeywordBuilder()
    .withText(keywords[i])
    .build();

  // Bad: retrieving the result in the same
  // loop that creates the operation
  // leads to poor performance.
  let newKeyword =
      keywordOperation.getResult();
  newKeyword.applyLabel("New keywords");
}
// Create an array to hold the operations
let operations = [];

for (let i = 0; i < keywords.length; i++) {
  let keywordOperation = adGroup
    .newKeywordBuilder()
    .withText(keywords[i])
    .build();
  operations.push(keywordOperation);
}

// Process the operations separately. Allows
// Google Ads scripts to group operations into
// batches.
for (let i = 0; i < operations.length; i++) {
  let newKeyword = operations[i].getResult();
  newKeyword.applyLabel("New keywords");
}