הרשאה לשירותי Google

כדי לגשת לנתונים פרטיים משירותי Google מובנים או משירותי Google מתקדמים, צריך לקבל הרשאה מהמשתמש ב-Google Apps Script.

איך פועלת ההרשאה לשירותי Google

כשסקריפט דורש גישה לשירותי Google, הוא פועל לפי התהליך הכללי הבא:

  1. זיהוי: Apps Script סורק את הסקריפט כדי לזהות באילו שירותים הוא משתמש (לדוגמה, SpreadsheetApp או GmailApp).
  2. קביעת היקף ההרשאות: על סמך הסריקה, Apps Script מזהה קבוצה של היקפי הרשאות ל-OAuth שנדרשים להרצת הסקריפט.
  3. בדיקת הרשאה: כשהסקריפט מופעל, הוא בודק אם המשתמש כבר אישר את היקפי ההרשאות האלה.
  4. בקשה מהמשתמש: אם חסרה הרשאה, מופיעה תיבת דו-שיח שבה המשתמש מתבקש לתת הרשאה.
  5. הרצה: אחרי שהסקריפט מקבל הרשאה, הוא יכול לגשת לנתונים המבוקשים של המשתמש.

הרשאות וסוגי סקריפטים

זהות המשתמש שהסקריפט פועל איתה – וכך גם הנתונים שהוא יכול לגשת אליהם – משתנה בהתאם לתרחיש שבו הסקריפט מופעל, כפי שמוצג בטבלה הבאה.

סוג הסקריפט הסקריפט פועל כ…
עצמאי, תוסף ל-Google Workspace, או מקשר ל-Google Docs, ל-Google Sheets, ל-Google Slides או ל-Google Forms משתמש במקלדת
פונקציה בהתאמה אישית בגיליון אלקטרוני משתמש לא רשום; עם זאת, מגבלות המכסה נחשבות כחלק מהמכסה של המשתמש במקלדת
אפליקציית אינטרנט או גאדג'ט של Google Sites משתמש במקלדת או בעל הסקריפט, בהתאם לאפשרויות שנבחרו כשפורסים את האפליקציה
Installable trigger המשתמש שיצר את הטריגר

הענקת זכויות גישה

‫Apps Script קובע את היקפי ההרשאה (כמו גישה לקובצי Sheets או ל-Gmail) באופן אוטומטי, על סמך סריקה של הקוד. קוד שהוסף לו הערה עדיין יכול ליצור בקשת הרשאה. אם סקריפט צריך הרשאה, תיבת דו-שיח של הרשאה מופיעה כשמריצים אותו.

סקריפטים שאישרתם בעבר יבקשו גם אישור נוסף אם שינוי בקוד יוסיף שירותים חדשים. יכול להיות שהסקריפטים לא יבקשו הרשאה אם תיגשו לסקריפט כאפליקציית אינטרנט שפועלת תחת זהות המשתמש של בעל הסקריפט.

ביטול הרשאות גישה

כדי לבטל את הגישה של סקריפט לנתונים שלכם:

  1. עוברים לקטע האבטחה בחשבון Google.
  2. בקטע החיבורים שיצרת לאפליקציות ולשירותים של צדדים שלישיים, לוחצים על הצגת כל החיבורים.
  3. בוחרים את הסקריפט או האפליקציה שרוצים לבטל את הגישה שלהם.
  4. לוחצים על מחיקת כל החיבורים שיצרת אל APP_NAME ואז על אישור.

הגבלת ההיקף למסמך הנוכחי

אם אתם יוצרים תוסף או סקריפט אחר שמשתמש בשירות Spreadsheet, בשירות Document, בשירות Slides או בשירות Forms, אתם יכולים להגדיר שתיבת הדו-שיח של ההרשאה תבקש גישה רק לקבצים שבהם נעשה שימוש בתוסף או בסקריפט, ולא לכל הגיליונות האלקטרוניים, המסמכים או הטפסים של המשתמש. כדי לעשות את זה, צריך לכלול את הערת JsDoc הבאה בהערה ברמת הקובץ:

/**
 * @OnlyCurrentDoc
 */

הערה מנוגדת, @NotOnlyCurrentDoc, זמינה אם הסקריפט כולל ספרייה שמצהירה על @OnlyCurrentDoc, אבל הסקריפט הראשי בעצם דורש גישה ליותר מהקובץ הנוכחי.

מחזור החיים של ההרשאות בתוספים

תוספים ל-Sheets, ל-Docs, ל-Slides ול-Forms בדרך כלל פועלים לפי אותו מודל הרשאות כמו סקריפטים שמקשרים למסמך. עם זאת, בנסיבות מסוימות, הפונקציות onOpen(e) ו-onEdit(e) פועלות במצב ללא הרשאה, שיוצר כמה סיבוכים נוספים. מידע נוסף מופיע במדריך למחזור החיים של ההרשאות לתוספים.

מגבלות משתמשים באפליקציות OAuth

אפליקציות שמשתמשות ב-OAuth כדי לגשת לנתוני משתמשים ב-Google, כולל פרויקטים של Apps Script, כפופות למגבלות הרשאות. פרטים נוספים מופיעים במאמר בנושא מגבלות על משתמשים באפליקציות OAuth.

התנהגות של אימות מחדש ב-Apps Script

‫Apps Script לא אוכף את תדירות האימות מחדש שמוגדרת בהגדרות השירות של Google Cloud. הסיבה לכך היא ש-Apps Script יכול לפעול באופן אוטומטי באמצעות טריגרים, שפועלים ללא אינטראקציה ישירה של המשתמש. ההרצות האוטומטיות האלה לא מפעילות את ההנחיות לאימות מחדש. אפליקציית Apps Script לא מבקשת מכם לבצע אימות מחדש באופן אוטומטי אחרי פרק הזמן שצוין (לדוגמה, 12 שעות).

הגדרת היקפים מפורשים במניפסט

‫Apps Script קובע באופן אוטומטי את ההיקפים הנדרשים על ידי סריקת הקוד כדי למצוא קריאות לפונקציות. אם אתם צריכים יותר שליטה, אתם יכולים להגדיר באופן מפורש את היקפי ההרשאות במניפסט של הפרויקט (appsscript.json). מומלץ לעשות זאת בסקריפטים שפורסמו כדי לוודא שאתם משתמשים בהרשאות המינימליות הנדרשות.

הוראות מפורטות מופיעות במאמר הגדרת היקפי הרשאה מפורשים.

פתרון בעיות

  • השגיאה 'נדרשת הרשאה' כשמפעילים טריגר: המשתמש שיצר את הטריגרים צריך לאשר אותם. אם מוסיפים קוד שדורש הרשאות חדשות, צריך להריץ ידנית פונקציה בכלי לעריכת סקריפטים פעם אחת כדי להפעיל את תיבת הדו-שיח של ההרשאה.
  • ההיקפים לא מתעדכנים: אם עדכנתם את הקוד אבל השינויים לא משתקפים בתיבת הדו-שיח של ההרשאה, נסו לשמור את הפרויקט ולרענן את העורך. אם אתם משתמשים בהיקפים מפורשים במניפסט, אתם צריכים לוודא שהוספתם את ההיקף החדש למערך oauthScopes.
  • האזהרה 'האפליקציה הזו חסומה' או אזהרה לגבי אפליקציה לא מאומתת: האזהרה הזו מוצגת אם הסקריפט משתמש בהיקפי הרשאות רגישים או מוגבלים, ולא אומת על ידי Google. אימות לקוח OAuth