迭代器是一种常见的程序设计模式,用于在以下情况下遍历对象列表:
- 一开始可能并不知道列表的大小。
- 一次性将整个列表加载到内存中可能会占用过多资源。
迭代器提供两种方法: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() 的值。以下代码段中的 x 和 y 将具有相同的值:
var x = AdsApp.keywords().get().totalNumEntities();
var y = AdsApp.keywords().withLimit(5).get().totalNumEntities();
如需获取 Google Ads 实体的迭代器,您必须先构建 选择器。