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

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

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

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

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

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

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

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

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

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

הבנת אובייקטים גלובליים

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

שיטות שיחה

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

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

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

GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');

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

var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');

// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');

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

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

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

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

עבודה עם טיפוסים בני מנייה (enum)

רוב השירותים כוללים כמה טיפוסים בני מנייה (enum) של ערכים בעלי שם. לדוגמה, שירות Drive משתמש ברכיבי enums Access ו-Permission כדי לקבוע לאילו משתמשים תהיה גישה לקובץ או לתיקייה. כמעט בכל המקרים, ניגשים ל-enums האלה מהאובייקט הגלובלי. לדוגמה, קריאה ל-method 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);