Iteradores

Los iteradores son un patrón de programación común que se usa para recorrer una lista de objetos cuando

  • Es posible que el tamaño de la lista no se conozca desde el principio.
  • Cargar toda la lista en la memoria de una vez puede resultar demasiado intensivo en cuanto a recursos.

Los iteradores exponen dos métodos: boolean hasNext() y Object next(). Las secuencias de comandos de Google Ads utilizan el patrón Iterator para recuperar entidades de Google Ads.

Desde el punto de vista funcional, los iteradores no son muy diferentes de los arrays normales y pueden hacer que tu código sea más conciso. Compara el código que recorre un array:

for (var i = 0; i < myArray.length; i++) {
  let myObject = myArray[i];
}

con código que recorre un iterador:

while (myIterator.hasNext()) {
  let myObject = myIterator.next();
}

En el siguiente código, se muestra el uso de un iterador en todas las campañas de Búsqueda y de Display de tu cuenta:

var campaignIterator = AdsApp.campaigns().get();

while (campaignIterator.hasNext()) {
  let campaign = campaignIterator.next();
  console.log(`${campaign.getName()}; active? ${campaign.isEnabled()}; ` +
      `budget=${campaign.getBudget().getAmount()}`);
}

También puedes usar la iteración de JavaScript integrada:

for (const campaign of AdsApp.campaigns()) {
  console.log(`${campaign.getName()}; active? ${campaign.isEnabled()}; ` +
      `budget=${campaign.getBudget().getAmount()}`);
}

La aplicación de withLimit() a un selector no cambia el valor de totalNumEntities(). x y y en el siguiente fragmento tendrán el mismo valor:

var x = AdsApp.keywords().get().totalNumEntities();
var y = AdsApp.keywords().withLimit(5).get().totalNumEntities();

Para obtener un Iterator de entidades de Google Ads, primero debes construir un Selector.