איטרטורים

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

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

אובייקטים מסוג 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();

כדי לקבל Iterator של ישויות Google Ads, צריך קודם ליצור Selector.