שירותי Google מובנים

ב-Google Apps Script יש יותר מ-30 שירותים מובנים ליצירת אינטראקציה עם נתוני משתמשים, עם מערכות אחרות של Google ועם מערכות חיצוניות. השירותים האלה מסופקים כאובייקטים גלובליים שדומים לאובייקט Math הרגיל של JavaScript. לדוגמה, כמו ש-Math מציע שיטות כמו random() וקבועים כמו PI, שירות הגיליון האלקטרוני של Apps Script מציע שיטות כמו openById(id), מחלקות (אובייקטים צאצאים) כמו Range וסוגי ספירה כמו DataValidationCriteria.

מסמכי העזר לשירותים ששולטים במוצריGoogle Workspace מרוכזים בקטעGoogle Workspace Services (שירותים) בכותרת Reference (חומר עזר) בסרגל הצד של האתר הזה. שירותי כלי עזר (לדברים כמו יצירת ממשקי משתמש, ניתוח XML או כתיבת נתוני יומן) נאספים בקטע Script Services (שירותי סקריפטים).

תכונות מודרניות של JavaScript

‫Apps Script תומך בשתי סביבות זמן ריצה של JavaScript: סביבת זמן הריצה המודרנית V8 וסביבת זמן ריצה ישנה יותר שמבוססת על מפרש JavaScript של Rhino מבית Mozilla.

זמן הריצה של V8 תומך בתחביר ובתכונות מודרניים של ECMAScript. סביבת זמן הריצה של Rhino מבוססת על התקן הישן יותר של JavaScript 1.6, בתוספת כמה תכונות מ-1.7 ומ-1.8. אתם יכולים לבחור באופן חופשי את זמן הריצה שבו תרצו להשתמש עם הסקריפט, אבל מומלץ מאוד להשתמש בזמן הריצה של V8.

כל סביבת ריצה תומכת במחלקות ובאובייקטים של JavaScript שזמינים לסקריפט שלכם, בנוסף לשירותי Google מתקדמים ולשירותים המובנים. הסקריפטים יכולים להשתמש באובייקטים נפוצים כמו Array,‏ Date,‏ RegExp,‏ וכו', וגם באובייקטים הגלובליים Math ו-Object.

שימוש בהשלמה אוטומטית

הכלי לעריכת סקריפטים כולל תכונה של 'עזרה בכתיבה', שנקראת בדרך כלל 'השלמה אוטומטית'. התכונה הזו מציגה את האובייקטים הגלובליים, וגם את השיטות והסוגים המנויים שתקפים בהקשר הנוכחי של הסקריפט. הצעות להשלמה אוטומטית מופיעות אוטומטית כשמקלידים נקודה אחרי אובייקט גלובלי, enum או קריאה למתודה שמחזירה מחלקה של Apps Script. לדוגמה:

  • אם מקלידים את השם המלא של אובייקט גלובלי או בוחרים אותו מההשלמה האוטומטית, ואז מקלידים . (נקודה), יוצגו כל השיטות והמספורים של המחלקה הזו.
  • אם תקלידו כמה תווים, יוצגו כל ההצעות התקפות שמתחילות בתווים האלה.

הסבר על אובייקטים גלובליים

כל שירות מספק לפחות אובייקט גלובלי (ברמה העליונה). לדוגמה, הגישה לשירות Gmail מתבצעת רק דרך האובייקט GmailApp. חלק מהשירותים מספקים כמה אובייקטים גלובליים. לדוגמה, שירות הבסיס כולל ארבעה אובייקטים גלובליים: Browser,‏ Logger,‏ MimeType ו-Session.

שיטות להתקשרות

האובייקטים הגלובליים של כמעט כל השירותים המתקדמים או השירותים המובנים כוללים שיטות שמחזירות נתונים או מחלקה של Apps Script. הסקריפטים מבצעים קריאות ל-method בפורמט הזה:

GlobalObjectName.methodName(argument1, argument2, ..., argumentN); 

לדוגמה, סקריפט יכול לשלוח אימייל על ידי קריאה לשיטה sendEmail(recipient, subject, body) של שירות Gmail באופן הבא:

GmailApp.sendEmail('[email protected]', 'Subject line', 'This is the body.'); 

אם שיטה מחזירה עוד מחלקה של Apps Script, אפשר לשרשר קריאות לשיטות בשורה אחת. (סוגי ההחזרה מוצגים גם בהשלמה האוטומטית וגם בתיעוד ההפניה של שיטה). לדוגמה, השיטה DocumentApp.create() מחזירה Document, ולכן שני קטעי הקוד הבאים שקולים:

var doc = DocumentApp.create('New document'); var body = doc.getTab('t.0').asDocumentTab().getBody(); body.appendParagraph('New paragraph.');  // Same result as above. DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()     .appendParagraph('New paragraph.'); 

גישה לכיתות של ילדים

כל שירות כולל מחלקת צאצא אחת או יותר שלא ניתן לגשת אליהן מהרמה העליונה כמו לאובייקט גלובלי. אי אפשר להשתמש במילת המפתח new כדי ליצור את המחלקות האלה, כמו שאפשר לעשות עם מחלקות JavaScript רגילות כמו Date. אפשר לגשת למחלקת צאצא רק על ידי קריאה לשיטה שמחזירה אותה. אם אתם לא יודעים איך לגשת למחלקה מסוימת, אתם יכולים לעבור לדף השורש של מסמכי העיון של השירות ולחפש שיטה שמחזירה את המחלקה הרצויה.

התמודדות עם ממשקים

יש כמה שירותים שכוללים מחלקות מיוחדות שמסומנות כ-'ממשקים' במסמכי העיון. אלה מחלקות גנריות שמשמשות כסוגי החזרה לשיטות שלא יכולות לקבוע את הסוג המדויק מראש. לדוגמה, השיטה Body.getChild(childIndex) של שירות המסמכים מחזירה אובייקט גנרי מסוג Element. ‫Element הוא ממשק שמייצג מחלקה אחרת, אולי Paragraph או Table. אובייקטים של ממשק הם בדרך כלל לא שימושיים בפני עצמם. במקום זאת, בדרך כלל רוצים להפעיל שיטה כמו Element.asParagraph() כדי להמיר את האובייקט בחזרה למחלקה מדויקת.

עבודה עם סוגי נתונים מנומריים

רוב השירותים כוללים כמה סוגי enum (סוגים ממוספרים) של ערכים עם שמות. לדוגמה, שירות Drive משתמש בסוגי הנתונים המנויים Access ו-Permission כדי לקבוע לאילו משתמשים יש גישה לקובץ או לתיקייה. כמעט בכל המקרים, ניגשים לסוגי ה-enum האלה מהאובייקט הגלובלי. לדוגמה, קריאה לשיטה Folder.setSharing(accessType, permissionType) נראית כך:

// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can // prohibit this setting for Google Workspace users.) var folder = DriveApp.createFolder('Shared Folder'); folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);