Google Apps Script מספקת יותר מ-30 שירותים מובנים לאינטראקציה עם נתוני משתמשים, מערכות אחרות של Google ומערכות חיצוניות. השירותים האלה מסופקים כאובייקטים גלובליים שדומים לאובייקט Math הרגיל של JavaScript. לדוגמה, כמו ש-Math מציע שיטות כמו random() וקבועים כמו PI, שירות הגיליון האלקטרוני של Apps Script מציע שיטות כמו openById(id), מחלקות (אובייקטים צאצאים) כמו Range וסוגי ספירה כמו DataValidationCriteria.
מסמכי העיון לשירותים ששולטים במוצרי Google Workspace מרוכזים בקטע 'שירותי Google Workspace' בכותרת 'עיון' בסרגל הצד באתר הזה. שירותי כלי עזר (לדברים כמו יצירת ממשקי משתמש, ניתוח 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.
מכיוון שקוד Apps Script פועל בשרתים של Google (למעט דפים של HTML-service), תכונות JavaScript שמבוססות על דפדפן כמו DOM manipulation או ממשק ה-API של Window לא זמינות ב-Apps Script.
השלמה אוטומטית
בכלי לעריכת סקריפטים יש תכונה של עזרה בכתיבה, שנקראת בדרך כלל השלמה אוטומטית. התכונה הזו מציגה את האובייקטים הגלובליים, וגם את השיטות והספירות שרלוונטיות להקשר הנוכחי של הסקריפט. ההצעות להשלמה אוטומטית מופיעות אוטומטית כשמקלידים נקודה אחרי אובייקט גלובלי, enum או קריאה למתודה שמחזירה מחלקה של Apps Script. לדוגמה:
- אם מקלידים את השם המלא של אובייקט גלובלי או בוחרים אחד מההשלמה האוטומטית,
ואז מקלידים
.(נקודה), מוצגות כל השיטות והסוגים המנויים של המחלקה הזו. - אם מקלידים כמה תווים, רואים את כל ההצעות התקפות שמתחילות בתווים האלה.
אובייקטים גלובליים
כל שירות מספק אובייקט גלובלי אחד לפחות (ברמה העליונה). לדוגמה, הגישה לשירות Gmail מתבצעת רק דרך האובייקט GmailApp. חלק מהשירותים מספקים כמה אובייקטים גלובליים. לדוגמה, שירות הבסיס כולל ארבעה אובייקטים גלובליים: Browser, Logger, MimeType ו-Session.
Methods
האובייקטים הגלובליים של כמעט כל השירותים המתקדמים או השירותים המובנים כוללים שיטות שמחזירות נתונים או מחלקה של Apps Script. סקריפטים מבצעים קריאות לשיטות בפורמט הבא:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
לדוגמה, סקריפט יכול לשלוח אימייל על ידי קריאה לשיטה sendEmail(recipient, subject, body) של שירות Gmail באופן הבא:
GmailApp.sendEmail('claire@example.com', '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.
כדי לגשת למחלקת צאצא, צריך להפעיל method שמחזירה אותה. אם אתם לא בטוחים איך לגשת למחלקה מסוימת, כדאי לעבור לדף בסיס של מאמרי העזרה של השירות – מפורטות בו המחלקות של השירות והשיטות שמחזירות אותן.
ממשקים
חלק מהשירותים כוללים מחלקות שמסומנות כ-'interfaces' במסמכי העיון. אלה מחלקות כלליות שמשמשות כסוגי החזרה לשיטות שלא ניתן לקבוע את הסוג המדויק שלהן מראש. לדוגמה, השיטה Body.getChild(childIndex) של Document service מחזירה אובייקט Element גנרי.
הממשק Element מייצג מחלקה אחרת, אולי Paragraph או Table. אובייקטים של ממשק הם בדרך כלל לא שימושיים בפני עצמם. במקום זאת, צריך להפעיל שיטה כמו Element.asParagraph() כדי להמיר את האובייקט בחזרה למחלקה ספציפית.
טיפוסים בני מנייה (enum)
רוב השירותים כוללים סוגי מנייה (enumerated types) של ערכים עם שמות. לדוגמה, שירות Google Drive משתמש בערכי ה-enum Access ו-Permission כדי לקבוע לאילו משתמשים יש גישה לקובץ או לתיקייה. ברוב המקרים, ניגשים לערכי ה-enum האלה מהאובייקט הגלובלי, כמו בדוגמה הבאה:
// 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);