ב-Google Apps Script יש יותר מ-30 שירותים מובנים ליצירת אינטראקציה עם נתוני משתמשים, מערכות אחרות של Google ומערכות חיצוניות. השירותים האלה מוצגים כאובייקטים גלובליים, בדומה לאובייקט הסטנדרטי Math
של JavaScript. לדוגמה, בדיוק כמו ש-Math
מציע שיטות כמו random()
ומשתני קבוע כמו PI
, השירות של הגיליונות האלקטרוניים ב-Apps Script מציע שיטות כמו openById(id)
, כיתות (אובייקטים צאצאים) כמו Range
וממשקי enum כמו DataValidationCriteria
.
מסמכי העזרה של השירותים ששולטים במוצרי נמצאים בקטע Services (שירותי ) שבכותרת Reference (חומר עזר) בסרגל הצד של האתר הזה. שירותי כלי עזר (לפעולות כמו יצירת ממשקי משתמש, ניתוח XML או כתיבת נתוני יומנים) נאספים בקטע 'שירותי סקריפט'.
תכונות מודרניות של JavaScript
ב-Apps Script יש תמיכה בשני סביבות זמן ריצה של JavaScript: סביבת זמן הריצה המודרנית V8 וסביבת זמן ריצה ישנה יותר שמבוססת על המתורגמן Rhino JavaScript של Mozilla.
זמן הריצה של V8 תומך בתחביר ובתכונות מודרניים של ECMAScript. סביבת זמן הריצה של Rhino מבוססת על התקן הישן JavaScript 1.6, בתוספת כמה תכונות מ-1.7 ומ-1.8. אתם יכולים לבחור באופן חופשי את סביבת זמן הריצה שבה תרצו להשתמש עם הסקריפט, אבל מומלץ מאוד להשתמש בסביבת זמן הריצה של V8.
כל סביבת זמן ריצה תומכת בכיתות ובאובייקטים של JavaScript שזמינים לסקריפט, בנוסף לשירותי Google המתקדמים ולשירותים המובנים. אפשר להשתמש בסקריפטים באובייקטים נפוצים כמו Array
, Date
, RegExp
, וכו', וגם באובייקטים הגלובליים Math
ו-Object
.
שימוש בהשלמה אוטומטית
כלי עריכת הסקריפטים כולל את התכונה 'עזרה בתוכן', שנקראת בדרך כלל 'השלמה אוטומטית', שמציגה את האובייקטים הגלובליים, וגם את השיטות והרשימות של הערכים הקבועים (enums) התקפים בהקשר הנוכחי של הסקריפט. ההצעות להשלמה אוטומטית מופיעות באופן אוטומטי בכל פעם שמקלידים נקודה אחרי קריאה של אובייקט גלובלי, קריאה של enum או קריאה של method שמחזירה כיתה של Apps Script. לדוגמה:
- אם מקלידים את השם המלא של אובייקט גלובלי או בוחרים אחד מהשלמות האוטומטיות, ואז מקלידים
.
(נקודה), יוצגו כל השיטות והמשתנים המפורטים של הכיתה הזו. - אם מקלידים כמה תווים, מוצגות כל ההצעות התקינות שמתחילות בתווים האלה.
הסבר על אובייקטים גלובליים
כל שירות מספק אובייקט גלובלי אחד לפחות (ברמה העליונה). לדוגמה, הגישה לשירות Gmail מתבצעת רק דרך האובייקט GmailApp
. בחלק מהשירותים יש כמה אובייקטים גלובליים. לדוגמה, Base service כולל ארבעה אובייקטים גלובליים: Browser
, Logger
, MimeType
ו-Session
.
שיטות קריאה
האובייקטים הגלובליים של כמעט כל השירותים המובנים או השירותים המתקדמים כוללים שיטות שמחזירות נתונים או כיתה של Apps Script. סקריפטים מבצעים קריאות ל-method בפורמט הזה:
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
. אפשר לגשת לכיתה צאצאית רק על ידי קריאה לשיטה שמחזירה אותה. אם אתם לא בטוחים איך לגשת לכיתה מסוימת, תוכלו להיכנס לדף הבסיס של מסמכי העזרה של השירות ולחפש שיטה שמחזירה את הכיתה הרצויה.
עבודה עם ממשקים
כמה שירותים כוללים כיתות מיוחדות שמסומנות בתור 'ממשקים' במסמכי העזרה. אלה מחלקות כלליות שמשמשות כסוגי החזרה של שיטות שלא ניתן לקבוע מראש את הסוג המדויק שלהן. לדוגמה, השיטה Document service Body.getChild(childIndex)
מחזירה אובייקט Element
כללי.
Element
הוא ממשק שמייצג מחלקה אחרת, אולי Paragraph
או Table
. אובייקטים של ממשק הם לרוב לא שימושיים בפני עצמם. במקום זאת, בדרך כלל כדאי להפעיל שיטה כמו Element.asParagraph()
כדי להמיר את האובייקט בחזרה למחלקה מדויקת.
עבודה עם enums
רוב השירותים כוללים כמה enums (סוגים מפורטים) של ערכים עם שם. לדוגמה, שירות Drive משתמש במאפייני enum Access
ו-Permission
כדי לקבוע לאילו משתמשים יש גישה לקובץ או לתיקייה. כמעט תמיד ניגשים למאפייני ה-enum האלה מהאובייקט הגלובלי. לדוגמה, קריאה ל-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 users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);