מחזוריים הם תבנית תכנות נפוצה שמשמשת לסריקה של רשימת אובייקטים כאשר
- יכול להיות שהגודל של הרשימה לא יהיה ידוע מראש.
- טעינה של כל הרשימה לזיכרון בבת אחת עשויה להיות יקרה מדי מבחינת משאבים.
למערכי 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()}`);
}
אפשר גם להשתמש בחזרה (iteration) מובנית ב-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();
כדי לקבל Iterator של ישויות ב-Google Ads, צריך קודם ליצור Selector.