פתרון בעיות

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

הודעות שגיאה

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

שגיאות תחביר

שגיאות תחביר נגרמות מכתיבת קוד שלא תואם ל-JavaScript הדקדוק, השגיאות יזוהו ברגע שתנסו לשמור את הסקריפט. לדוגמה, קטע הקוד הבא מכיל שגיאת תחביר:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

בבעיית התחביר כאן חסר תו ) חסר בסוף התו השורה הזו. כשתנסו לשמור את הסקריפט, תקבלו את השגיאה הבאה:

חסר ) אחרי רשימת ארגומנטים. (שורה 4)

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

שגיאות זמן ריצה

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

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

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

כתובת אימייל לא חוקית: john (שורה 5)

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

שגיאות נפוצות

בהמשך ריכזנו רשימה של שגיאות נפוצות והסיבות לכך.

השירות הופעל יותר מדי פעמים: <action name>

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

השרת לא זמין.או אירעה שגיאה בחיבור לשרת, יש לנסות שוב.

יש כמה סיבות אפשריות לשגיאות האלה:

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

נדרשת הרשאה כדי לבצע את הפעולה הזו.

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

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

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

  1. בצד ימין של פרויקט Apps Script, לוחצים על Triggers (טריגרים) .
  2. משמאל לטריגר שרוצים להסיר, לוחצים על סמל האפשרויות הנוספות . &gt; מחיקת הטריגר.

אפשר גם להסיר טריגרים בעייתיים לתוספים: להסיר את התוסף.

הגישה נדחתה: DriveApp או מדיניות הדומיין השביתה אפליקציות Drive של צד שלישי

האדמינים של Google Workspace דומיינים כוללים את יכולת להשבית Drive API לדומיין, שמונע מהמשתמשים להתקין יישומים של Google Drive ולהשתמש בהם. ההגדרה הזו גם מונעת מהמשתמשים את האפשרות להשתמש בתוספים של Apps Script שמבוססים על שירות Drive או שירות Drive מתקדם (גם אם הסקריפט אושר לפני שהאדמין השבית את Drive API).

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

לסקריפט אין הרשאה לקבל את פרטי הזהות של המשתמש הפעיל.

מציין שהזהות וכתובת האימייל של המשתמש הפעיל לא זמינים סקריפט. האזהרה הזו מופיעה כתוצאה משיחה אל Session.getActiveUser() היא יכולה גם לנבוע מקריאה אל Session.getEffectiveUser() אם הסקריפט פועל במצב הרשאה שאינו AuthMode.FULL אם האזהרה הזו מסומנת, השיחות הבאות יתבצעו User.getEmail() מחזירה רק "".

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

  • מומלץ להשתמש ב-AuthMode.FULL Session.getEffectiveUser() במקום זאת.
  • ב-AuthMode.LIMITED, מוודאים הבעלים אישר את הסקריפט.
  • במצבי הרשאה אחרים, יש להימנע מהפעלה של אף אחת מהשיטות.
  • אם אתם Google Workspace לקוחות חדשים לקבל את האזהרה הזאת טריגר להתקנה, צריך לוודא הטריגר פועל כמשתמש בארגון.

הספרייה חסרה

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

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

אירעה שגיאה כי גרסת הספרייה או גרסת הפריסה חסרות. קוד השגיאה Not_Found

הודעת השגיאה הזו מציינת אחת מהאפשרויות הבאות:

  • הגרסה שנפרסה של הסקריפט נמחקה. כדי לעדכן את הפריסה של הסקריפט שלך, ראה עריכת גרסה .
  • גרסת הספרייה שבה הסקריפט משתמש, נמחקה. כדי לבדוק חסרה ספרייה, לצד שם הספרייה לוחצים על עוד &gt; פתיחה בכרטיסייה חדשה. הספרייה החסרה נותן הודעת שגיאה. לאחר שמוצאים את הספרייה שרוצים לעדכן, אחת מהפעולות הבאות:
    • צריך לעדכן את הספרייה כדי להשתמש בגרסה אחרת. למידע נוסף, ראו עדכון לספרייה.
    • מסירים את הספרייה שנמחקה מפרויקט הסקריפט ומהקוד. צפייה הסרת ספרייה
  • הסקריפט של ספרייה שהסקריפט שלך משתמש בה כולל פורמט אחר בספרייה שמשתמשת בגרסה שנמחקה. יש לבצע אחת מהפעולות הבאות:
    • אם יש לכם גישת עריכה לספרייה שבה הסקריפט משתמש, עליכם לעדכן את את הספרייה המשנית בסקריפט הזה לגרסה קיימת.
    • צריך לעדכן את הספרייה כדי להשתמש בגרסה אחרת. למידע נוסף, ראו עדכון לספרייה.
    • מסירים את הספרייה מפרויקט הסקריפט ומהקוד. צפייה הסרת ספרייה

Error 400: invalid_scope בקריאה ל-Google Chat API באמצעות השירות המתקדם

אם מופיעה הודעת השגיאה Error 400: invalid_scope Some requested scopes cannot be shown, זה אומר שלא ציינתם היקפי הרשאות קובץ appsscript.json של פרויקט Apps Script. ברוב המקרים, Apps Script קובע באופן אוטומטי את היקפי ההרשאות שנדרשים לסקריפט, אבל כשמשתמשים בשירות המתקדם של Chat, צריך להוסיף ידנית את היקפי ההרשאות שבהם הסקריפט משתמש קובץ המניפסט של פרויקט Apps Script. צפייה הגדרת היקפים מפורשים.

כדי לפתור את השגיאה, צריך להוסיף את היקפי ההרשאות המתאימים לקובץ appsscript.json של פרויקט Apps Script כחלק המערך oauthScopes. לדוגמה, כדי לקרוא לפונקציה spaces.messages.create method, מוסיפים את הפרטים הבאים:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

ניפוי באגים

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

רישום ביומן

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

פרטים נוספים זמינים במדריך הרישום ביומן.

Error Reporting

חריגים שמתרחשים עקב שגיאות בזמן הריצה מופעלים באופן אוטומטי נרשמו באמצעות השירות Google Cloud Error Reporting. השירות הזה מאפשר לך לחפש ולסנן הודעות חריגות שפרויקט הסקריפט שלך יוצר.

כדי לגשת ל-Error Reporting, אפשר לעיין במאמר צפייה ביומני ענן ודוחות שגיאות ב מסוף Google Cloud Platform.

הפעלות

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

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

בדיקת סטטוס השירות של Apps Script

Google Workspace הוא נדיר, אבל לפעמים הוא ספציפי שירותים (כמו Gmail או Drive) נתקלתם בבעיות זמניות שעלולות לגרום להפסקות זמניות בשירות. כשהפעולה הזו קיימים, פרויקטים של Apps Script שיש להם אינטראקציה עם השירותים האלה לא יפעלו. כמצופה.

אפשר לבדוק אם יש שירות של Google Workspace על ידי הצגת Google Workspace Status Dashboard אם יש הפסקה זמנית בשירות או להמתין לפתרון הבעיה, או לחפש לקבלת עזרה נוספת מרכז העזרה של Google Workspace או בעיות מוכרות ב-Google Workspace התיעוד.

שימוש בכלי לניפוי באגים ובנקודות עצירה (breakpoint)

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

הוספת נקודת עצירה (breakpoint)

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

הוספת נקודת עצירה (breakpoint)

הרצת סקריפט במצב ניפוי באגים

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

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

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

בעיות עם כמה חשבונות Google

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

  • אם פותחים את עורך Apps Script כשאתם מחוברים ליותר מחשבון אחד, הודעות מ-Google כדי לבחור את החשבון שאיתו רוצים להמשיך.

  • אם אתם פותחים אפליקציית אינטרנט או תוסף ונתקלתם בבעיות במהלך התחברות לכמה חשבונות, תוכלו לנסות את אחת מהאפשרויות הבאות הפתרונות הבאים:

    • התנתק מכל חשבונות Google שלך והתחבר רק לחשבון שכולל את של התוסף או של אפליקציית האינטרנט שאליהם רוצים לגשת.
    • פתיחת חלון פרטי ב-Google Chrome, או גלישה פרטית מקבילה ומתחברים לחשבון Google שבו נמצא התוסף או אפליקציית האינטרנט. שרוצים לגשת אליו.

קבלת עזרה

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