איטרטורים

איטרטורים הם דפוס תכנות נפוץ המשמש למעבר בין אובייקטים ברשימה

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

איטרטורים חושפים שתי שיטות: 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, קודם צריך ליצור סלקטור.