Os iteradores são um padrão comum de programação usado para atravessar uma lista de objetos quando:
- o tamanho da lista não é conhecido desde o início;
- Carregar a lista inteira na memória de uma só vez pode consumir muitos recursos.
Os iteradores expõem dois métodos: boolean hasNext()
e Object next()
.
Os scripts do Google Ads usam o padrão Iterator para buscar entidades do Google Ads.
Funcionalmente, os iteradores não são muito diferentes das matrizes regulares e podem tornar o código mais conciso. Compare o código que atravessa uma matriz:
for (var i = 0; i < myArray.length; i++) {
let myObject = myArray[i];
}
com o código que atravessa um iterador:
while (myIterator.hasNext()) {
let myObject = myIterator.next();
}
O código a seguir demonstra o uso de um iterador em todas as campanhas da sua conta:
var campaignIterator = AdsApp.campaigns().get();
while (campaignIterator.hasNext()) {
let campaign = campaignIterator.next();
console.log(`${campaign.getName()}; active? ${campaign.isEnabled()}; ` +
`budget=${campaign.getBudget().getAmount()}`);
}
Também é possível usar a iteração JavaScript integrada:
for (const campaign of AdsApp.campaigns()) {
console.log(`${campaign.getName()}; active? ${campaign.isEnabled()}; ` +
`budget=${campaign.getBudget().getAmount()}`);
}
A aplicação de withLimit()
a um seletor não muda o valor de
totalNumEntities()
. x
e y
no snippet a seguir terão o mesmo valor:
var x = AdsApp.keywords().get().totalNumEntities();
var y = AdsApp.keywords().withLimit(5).get().totalNumEntities();
Para conseguir um iterador de entidades do Google Ads, primeiro é necessário criar um seletor.