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

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

מסמכי התיעוד של השירותים ששולטים במוצרים מסוגGoogle Workspace נאספים בקטעGoogle Workspace Services' שמתחת לכותרת 'Reference' (הפניה) בסרגל הצד של האתר. בקטע 'שירותי סקריפט' מופיעים שירותי עזר (לפעולות כמו יצירת ממשקי משתמש, ניתוח 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 אובייקטים גלובליים.

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

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

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

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

כל שירות מספק לפחות אובייקט גלובלי אחד (ברמה עליונה). לדוגמה, אפשר לגשת לשירות 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. אפשר לגשת למחלקה צאצא רק באמצעות קריאה לשיטה שמחזירה אותה. אם אתם לא בטוחים איך נכנסים למחלקה מסוימת, תוכלו להיכנס לדף הבסיס, לעיין במסמכי העזר של השירות ולחפש שיטה שמחזירה את המחלקה הרצויה.

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

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

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

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