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

ב-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);