迭代器

当出现以下情况时,迭代器是一种用于遍历对象列表的常见编程模式:

  • 一开始可能并不知道列表的大小。
  • 一次性将整个列表加载到内存中可能会过于耗费资源。

迭代器公开了 boolean hasNext()Object next() 两种方法。Google Ads 脚本使用迭代模式来提取 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 实体迭代器,您必须先构建一个选择器