איטרטורים

איטרטורים הם תבנית תכנות נפוצה שמשמשת למעבר על רשימה של אובייקטים

  • יכול להיות שגודל הרשימה לא יהיה ידוע מההתחלה.
  • טעינת הרשימה כולה לזיכרון בבת אחת עלולה לצרוך יותר מדי משאבים.

אובייקטים מסוג 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(). הערכים של x ו-y בקטע הקוד הבא יהיו זהים:

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

כדי לקבל איטרטור של ישויות ב-Google Ads, קודם צריך ליצור בורר.