Iterator

반복자는 다음과 같은 경우에 객체 목록을 탐색하는 데 사용되는 일반적인 프로그래밍 패턴입니다.

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

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

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

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를 가져오려면 먼저 선택자를 구성해야 합니다.