בדף הזה מפורטות כמה הודעות שגיאה נפוצות, בעיות ופעולות אפשריות ב-Google Classroom API לסוגי השגיאות הבאים:
- HTTP 400:
FAILED_PRECONDITION - HTTP 403:
PERMISSION_DENIED - HTTP 429:
RESOURCE_EXHAUSTED - HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
השגיאה FAILED_PRECONDITION מוחזרת כשהמשתמש מנסה לבצע פעולה שלא ניתן לאשר, כי הוא הגיע למגבלה או למצב של אפליקציה, כמו CourseNotModifiable. כדי לפתור את הבעיה FAILED_PRECONDITION, צריך להנחות את המשתמש לבצע פעולה מסוימת ואז לנסות שוב. או שבמקרים מסוימים, אפשר להשתמש בנקודות קצה חלופיות כדי לתקן את המצב בשם המשתמש.
AttachmentNotVisible
AttachmentNotVisible מציין שאחד או יותר מהקבצים המצורפים שצוינו לא גלויים למשתמש, לא מהסוג המבוקש או לא קיימים. לדוגמה, אם מנסים לגשת לפריטים ב-Drive שלא שותפו עם המשתמש, תופיע השגיאה הזו.
פעולה אפשרית: מתארים את הגורם לכישלון ומציעים למשתמש לבדוק מחדש את המזהים שהוא כלל, כמו מזהי קבצים ב-Drive. בנוסף, צריך לוודא שלמשתמש יש את ההרשאות המתאימות לצפייה בקובץ המצורף.
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner מציין שלא ניתן להסיר את הבעלים של תיקיית הקורס ב-Drive.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להעביר את הבעלות על תיקיית הקורס ב-Drive למשתמש אחר ולנסות שוב.
CannotRemoveCourseOwner
CannotRemoveCourseOwner מציין שאולי אי אפשר להסיר את בעלי הקורס.
פעולה אפשרית: מתארים את הסיבה לכשל ומציעים שלא להסיר את הבעלים של הקורס. ברוב המקרים, המשתמש מנסה להסיר את עצמו, וזה אסור.
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete מציין שאולי אי אפשר להסיר את הבעלים של הקורס כי העברת הבעלות על הכיתה הזו עדיין בתהליך.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להמתין כמה רגעים עד להשלמת הפעולה האסינכרונית של העברת הבעלות על הכיתה, ואז לנסות שוב.
CannotRemoveTeacherWithNoCourseOwner
הסמל CannotRemoveTeacherWithNoCourseOwner מציין שאולי אי אפשר להסיר מורה מקורס ללא בעלים.
פעולה אפשרית: מתארים את הסיבה לכשל ומציעים שלא להסיר את המורה. ברוב המקרים, חשבון המשתמש של בעל הקורס נמחק, ולכן מצב הקורס לא תקין.
CourseMemberLimitReached
CourseMemberLimitReached מציין שהפעולה שניסיתם לבצע תחרוג מהמספר המקסימלי של חברי הקורס. הקוד הזה מוחזר בדרך כלל על ידי
students.create()
מידע נוסף מופיע בקטע 'מגבלות על גודל הכיתה' במאמר הזמנת תלמידים לכיתה במרכז העזרה.
פעולה אפשרית: תיאור של הגורם לכישלון והצעה למשתמש להסיר חברים מיותרים מהקורס
CourseNotModifiable
CourseNotModifiable מציין שהקורס הרלוונטי נמצא במצב שלא מאפשר לשנות את המאפיינים שלו (מלבד מצב הקורס עצמו).
פעולה אפשרית: מציגים למשתמש הנחיה לשנות את הקורס למצב קורס שניתן לשינוי. כדי לשנות את המצב, משתמשים בפקודה courses.patch(). אפשר לשנות את מצב הקורס בבקשה שמשנה מאפיינים אחרים.
CourseTeacherLimitReached
CourseTeacherLimitReached מציין שהפעולה המבוקשת תחרוג מהמספר המקסימלי המותר של מורים בקורס. הקוד הזה מוחזר בדרך כלל על ידי השיטה teachers.create(). מידע נוסף מופיע בקטע 'מגבלות על גודל הכיתה' במאמר הוספת מורה עמית/ה לכיתה במרכז העזרה.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למשתמש להסיר מורים מיותרים מהקורס. אם זה רלוונטי לאפליקציה שלכם, אתם יכולים להשתמש בשיטה teachers.delete() כדי לנהל את רשימות התלמידים בשם המשתמש.
CourseTitleCannotContainUrl
CourseTitleCannotContainUrl מציין שהפעולה המבוקשת לא מותרת כי היא תוסיף כתובת URL לשם הקורס. אין תמיכה בתבניות של כתובות URL בשמות של קורסים.
פעולה אפשרית: מתארים את הסיבה לכשל ומציעים למשתמש להסיר את תבנית כתובת ה-URL מהשדה title. מותר להשתמש בכתובות ה-URL האלה בשדה description.
CourseTopicLimitReached
CourseTopicLimitReached מציין שהפעולה המבוקשת תחרוג מהמספר המקסימלי המותר של נושאים בקורס. הקוד הזה מוחזר בדרך כלל על ידי השיטה courses.topics.create().
פעולה אפשרית: מתאר את הסיבה לכישלון ומציע למשתמש להסיר נושאים מיותרים. אם זה רלוונטי לאפליקציה שלכם, אתם יכולים להשתמש בשיטה
courses.topics.delete()
כדי לנהל נושאים בשם המשתמש.
EmptyAssignees
EmptyAssignees מציין שהפעולה המבוקשת תסיר את כל הנמענים ממטלת הלימודים המתאימה. אין תמיכה בעבודה לכיתה ללא תלמידים שהוקצו להם.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים לבעלי הקורס שלא ניתן להסיר את כל הנמענים.
InactiveCourseOwner
הסמל InactiveCourseOwner מציין שהפעולה המבוקשת לא מותרת כי החשבון של בעל הקורס נמחק. האדמין של בעל הקורס צריך לשחזר את החשבון של בעל הקורס לפני שיבצע את הפעולה המבוקשת.
פעולה אפשרית: מתארים את הסיבה לכשל ומציעים לאדמין לשחזר את החשבון של בעלי הקורס לפני שמנסים שוב לבצע את הפעולה.
IneligibleOwner
IneligibleOwner מציין שאי אפשר להוסיף את המשתמש כבעלים של הקורס כי הוא לא מוגדר כמורה שותף.
פעולה אפשרית: מתארים את הסיבה לכישלון. אם המשתמש ששולח את הבקשה הוא לא אדמין, מציעים לו קודם לשלוח למשתמש הזמנה להיות מורה בקורס לפני עדכון הבעלים. אם המשתמש ששולח את הבקשה הוא אדמין, מציעים לו קודם להוסיף את המשתמש כמורה שותף בקורס.
ListCoursesStudentAndTeacherFilter
השגיאה ListCoursesStudentAndTeacherFilter מתרחשת כששולחים בקשת courses.list() עם השדות teacherId ו-studentId שניהם מאוכלסים. אפשר להגדיר רק אחד מהשדות האלה בכל בקשה.
עדיין אפשר לקבל רשימה של קורסים עם משתמשים ספציפיים של תלמידים ומורים על ידי שליחת שתי בקשות נפרדות. קודם כל, מאחזרים את הקורסים של המורה באמצעות בקשת courses.list() עם השדה teacherId מאוכלס, ואז שולחים בקשת courses.list() נוספת עם השדה studentId מאוכלס.
מחשבים את החיתוך של התוצאות כדי לקבל את רשימת הקורסים שתואמים לשני המשתמשים.
PendingInvitationExists
PendingInvitationExists מציין שמישהו כבר הוזמן לקבל בעלות על הקורס. השגיאה הזו מתרחשת במהלך העברת בעלות על קורס, אם העברה כבר התחילה אבל הבעלים החדשים עדיין לא אישרו אותה.
UserCannotOwnCourse
UserCannotOwnCourse מציין שאי אפשר להוסיף את המשתמש כבעלים של הקורס.
פעולה אפשרית: תיאור של הגורם לכישלון והצעה שלא ניתן ליצור את הקורס עם המשתמש כבעל הקורס. משתמש שהוא לא אדמין יכול לראות את השגיאה הזו אם הוא מנסה ליצור קורס עם משתמש אחר בתור הבעלים. אדמין שמבקש גישה לחשבון משתמש עשוי לראות את השגיאה הזו אם חשבון המשתמש שצוין כבעלים לא קיים או אם המשתמש לא נמצא בדומיין שלו.
UserGroupsMembershipLimitReached
UserGroupsMembershipLimitReached מציין שהמשתמש כבר חבר במספר המקסימלי המותר של קבוצות, ואין לו אפשרות להצטרף לקורסים. הקוד הזה מוחזר בדרך כלל על ידי students.create() או teachers.create().
מידע נוסף מופיע בקטע 'מגבלות על גודל הכיתה' במאמר במרכז העזרה בנושא הזמנת תלמידים לכיתה.
פעולה אפשרית: תיאור הסיבה לכישלון והצעה למשתמש לצאת מכל הקורסים שהוא לא משתתף בהם. אם המשתמש רוצה להשתתף בקורסים נוספים, הוא יכול ליצור חשבון נוסף. אם זה רלוונטי לאפליקציה שלכם, אתם יכולים להשתמש ב-students.create() או ב-teachers.delete() כדי לנהל את רשימות התלמידים בשם המשתמש.
HTTP 403: PERMISSION_DENIED
כל השיטות של Classroom API עשויות להחזיר שגיאה PERMISSION_DENIED (HTTP 403) אם משתמש קצה לא עומד בדרישות המוקדמות לגישה. ההודעה שמצורפת לשגיאה מכילה הודעת שגיאה שתעזור לכם לזהות את הסיבה לשגיאה ולהנחות את המשתמשים לבצע את הפעולה המתאימה.
בקטעים הבאים מתוארות הודעות שגיאה נפוצות ב-Classroom API.
CannotDirectAddUser
CannotDirectAddUser מציין שאי אפשר להוסיף משתמש ישירות לקורס. הקוד הזה מופיע כשמנהל דומיין מנסה להוסיף משתמש לקורס, אבל למשתמש אין כתובת אימייל או שהוא לא שייך לדומיין.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים שאדמין הדומיין יבדוק שחשבון המשתמש קיים ושייך לדומיין של האדמין בקורס.
CannotInviteUserInUntrustedDomain
השגיאה CannotInviteUserInUntrustedDomain מציינת שהמשתמש שמוזמן או
נוצר לא נמצא באותו דומיין של היישות הקוראת, או בדומיין מהימן
שלה. אם למתקשר יש רישיון ל-Google Workspace for Education Fundamentals, אי אפשר להוסיף או להזמין ישירות לקורס משתמשים מחוץ לדומיין שלא נחשבים מהימנים.
פעולה אפשרית: מתארים את הסיבה לכישלון ומציעים למתקשר לבחור באחת מהאפשרויות הבאות:
- צריך לכלול את הדומיינים של המשתמשים המתקשרים והמקבלים ברשימת הדומיינים המהימנים של כל אחד מהם ולנסות שוב.
- מציעים למתקשר לשתף ידנית קישור להזמנה לקורס או קוד כיתה. שימו לב: כדי לעשות את זה, אדמין צריך להגדיר הזמנות מחוץ לדומיין. מידע נוסף זמין במאמר הזמנת תלמידים לכיתה.
- מציעים למתקשר לשדרג לרישיון בתשלום של Google Workspace for Education, כי המגבלה חלה רק על רישיון Fundamentals.
ClassroomApiDisabled
ClassroomApiDisabled מציין שלמשתמש ששולח את הבקשה אין גישה ל-Classroom API.
פעולה אפשרית: מפנים את המשתמש להוראות בנושא הפעלת גישה לנתונים ב-Classroom. כדאי גם לעיין בערך ClassroomDisabled, כי יכול להיות שהמשתמש משתמש בחשבון הלא נכון.
ClassroomDisabled
ClassroomDisabled מציין שלמשתמש ששולח את הבקשה אין גישה ל-Classroom.
פעולה אפשרית: צריך להפנות את המשתמש להוראות בנושא הפעלת הגישה ל-Classroom. יכול להיות שהמשתמש משתמש בחשבון הלא נכון, ולכן כדאי לספק לו גם קישור למאמר בנושא שימוש בכמה חשבונות כדי שיוכל לבחור את החשבון הנכון.
ExpiredAddOnToken
ExpiredAddOnToken מציין שתוקף האסימון של התוסף שמשמש לשליחת קריאות ל-API פג.
פעולה אפשרית: מבקשים מהמשתמש לרענן את הדף או להיכנס שוב לתוסף כדי שתוכלו לקבל את פרמטר השאילתה addOnToken החדש מכתובת ה-URL של הבקשה.
InvalidAddOnToken
InvalidAddOnToken מציין שאסימון התוסף שהועבר בבקשה לא מורשה ליצור קובץ מצורף של תוסף במטלה.
פעולה אפשרית: השגיאה הזו יכולה להופיע אם המשתמש נכנס לתוסף עם חשבון שונה מהחשבון ב-Classroom. מנחים את המשתמש לצאת מכל החשבונות האחרים בדפדפן או לפתוח את Classroom בחלון פרטי ב-Chrome.
ProjectPermissionDenied
ProjectPermissionDenied מציין שהבקשה ניסתה לשנות משאב שמשויך לפרויקט אחר ב-Developer Console.
פעולה אפשרית: מציינים שהאפליקציה לא יכולה לשלוח את הבקשה המיועדת. רק פרויקט ב-Developer Console עם מזהה לקוח OAuth שיצר את המשאב יכול לבצע את הפעולה הזו.
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings מציין שהבקשה ניסתה לשנות את ההגדרות של תקופת מתן הציונים בקורס שבו למשתמש ששלח את הבקשה או לבעלים של הקורס אין את הרישיון המתאים ל-Google Workspace for Education, או שהמשתמש ששלח את הבקשה הוא לא מורה בקורס או אדמין בדומיין.
פעולה אפשרית: מציינים שהאפליקציה לא יכולה לשלוח את הבקשה המיועדת לעדכון ההגדרות של תקופת מתן הציונים בגלל הרישיון או סטטוס התפקיד בקורס. אפשר להקצות רישיונות במסוף Google Admin.
HTTP 429: RESOURCE_EXHAUSTED
הקוד RESOURCE_EXHAUSTED מוחזר כשלא ניתן לבצע את הפעולה המבוקשת כי נעשה שימוש בכל המשאבים, כמו מכסת נפח או קיבולת השרת. שגיאות מהסוג הזה בבקשות מתרחשות בדרך כלל כי האפליקציה יצרה עומס מוגזם.
כדי להימנע מהפעלת המגבלות האלה ולשפר את המהימנות של האפליקציה, כדאי להשתמש במנגנוני ניסיון חוזר. מנגנוני ניסיון חוזר תקינים כוללים:
כדאי להשתמש בהשהיה מעריכית לפני ניסיון חוזר (exponential backoff) קטועה כדי לנסות שוב את הבקשה ולמקסם את קצב העברת הנתונים של הבקשות בסביבות מקבילות.
כדי להימנע מהתנגשויות, כדאי להשתמש בהשהיה מעריכית קטועה לפני ניסיון חוזר (truncated exponential backoff) עם תוספת של רעידות. הוספת ג'יטר יכולה לעזור לבקשות שלכם להצליח מהר יותר, כי היא מוסיפה עיכוב אקראי שמפזר את העליות החדות בבקשות.
אם האפליקציה מחזירה שגיאות RESOURCE_EXHAUSTED בגלל מגבלות מכסה, צריך לשלוח בקשה להגדלת המכסה. מידע נוסף זמין במאמר במרכז העזרה בנושא מעקב אחרי מכסות של API.
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached מציין שהמשתמש כבר הצטרף למספר המקסימלי של קורסים שמותר להצטרף אליהם ביום אחד. מידע נוסף זמין בקטע 'הזמנות לקבוצה וגודל הקבוצה' במאמר הסבר על כללי המדיניות והמגבלות בקבוצות Google במרכז העזרה.
פעולה אפשרית: תיאור של הגורם לכישלון והצעה למשתמש להמתין יום אחד לפני ההצטרפות לקורס.
HTTP 500: INTERNAL
INTERNAL מציין שקרתה שגיאה לא צפויה במהלך עיבוד הבקשה. בנוסף, לעיתים קרובות אפשר לפתור שגיאות בבקשות מסוג INTERNAL באמצעות השהיה מעריכית לפני ניסיון חוזר (exponential backoff) כדי לנסות שוב את הבקשה. אם שגיאת INTERNAL נמשכת, אפשר לדווח עליה באמצעות דיווח על באג בכלי הציבורי Issue Tracker של Classroom API.