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

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

מאמרי העזרה לשירותים ששולטים ב-Google Workspace מוצרים נאספים בקטעGoogle Workspace Services" מתחת לכותרת "Reference" בסרגל הצד של האתר. שירותי כלי עזר (לפעולות כמו יצירת ממשקי משתמש, ניתוח XML או כתיבת נתוני יומנים) נאספים בקטע 'שירותי סקריפט'.

תכונות מודרניות של JavaScript

ב-Apps Script יש תמיכה בשני זמני ריצה של JavaScript: סביבת זמן הריצה המודרנית V8 ו סביבת זמן ישנה יותר שמופעלת על ידי Rhino JavaScript interpreter של Mozilla.

זמן הריצה של V8 תומך בתחביר ובתכונות מודרניים של ECMAScript. סביבת זמן הריצה של Rhino מבוססת על התקן הישן יותר JavaScript 1.6, בתוספת כמה תכונות מ-1.7 ומ-1.8. אתם יכולים לבחור באופן חופשי באיזה זמן ריצה תשתמשו עם הסקריפט, אבל מומלץ מאוד להשתמש בסביבת זמן הריצה של V8.

כל סביבת זמן ריצה תומכת בכיתות ובאובייקטים של JavaScript שזמינים לסקריפט, בנוסף לשירותי Google המתקדמים ולשירותים המובנים. אפשר להשתמש בסקריפטים באובייקטים נפוצים כמו Array,‏ Date,‏ RegExp,‏ וכו', וגם באובייקטים הגלובליים Math ו-Object.

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

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

אם method מחזירה מחלקה אחרת של 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 שירות המסמך Body.getChild(childIndex) מחזירה אובייקט Element גנרי. Element הוא ממשק שמייצג מחלקה אחרת, אולי Paragraph או Table. אובייקטים של ממשק הם לרוב לא שימושיים בפני עצמם. במקום זאת, בדרך כלל כדאי להפעיל שיטה כמו Element.asParagraph() כדי להמיר את האובייקט בחזרה למחלקה מדויקת.

עבודה עם enums

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