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