Iterator

Iterator는 다음 경우에 객체 목록을 순회하는 데 사용되는 일반적인 프로그래밍 패턴입니다.

  • 시작부터 목록의 크기를 알지 못하는 경우
  • 전체 목록을 한 번에 메모리에 로드하면 리소스가 지나치게 많이 소모될 수 있습니다.

반복자는 boolean hasNext()Object next()라는 두 가지 메서드를 노출합니다. Google Ads 스크립트는 Iterator 패턴을 사용하여 Google Ads 항목을 가져옵니다.

반복자는 기능적으로 일반 배열과 크게 다르지 않으며 코드를 더 간결하게 만들 수 있습니다. 배열 탐색에 사용되는 다음 코드와

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

반복자를 통과하는 코드 사용:

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

다음 코드는 계정의 모든 캠페인에서 반복자를 사용하는 방법을 보여줍니다.

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

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

기본 제공 JavaScript 반복을 사용할 수도 있습니다.

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

선택기에 withLimit()를 적용해도 totalNumEntities() 값은 변경되지 않습니다. 다음 스니펫의 xy는 같은 값을 갖게 됩니다.

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

Google Ads 항목의 Iterator를 사용하려면 먼저 Selector를 생성해야 합니다.