หน้านี้อธิบายข้อความแสดงข้อผิดพลาด ปัญหา และ การดำเนินการที่เป็นไปได้บางอย่างของ 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 แสดงว่าไฟล์แนบอย่างน้อย 1 รายการที่ระบุ
ไม่ปรากฏต่อผู้ใช้ ไม่ใช่ประเภทที่ขอ หรือไม่มีอยู่ เช่น รายการในไดรฟ์ที่ไม่ได้แชร์กับผู้ใช้จะแสดงข้อผิดพลาดนี้
การดำเนินการที่เป็นไปได้: อธิบายสาเหตุที่ทำให้เกิดข้อผิดพลาดและแนะนำให้ผู้ใช้ ตรวจสอบตัวระบุอีกครั้ง เช่น รหัสไฟล์ในไดรฟ์ ที่ผู้ใช้ระบุ นอกจากนี้ โปรดตรวจสอบว่าผู้ใช้มีสิทธิ์ที่เหมาะสมในการดูไฟล์แนบ
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner แสดงว่าระบบอาจนำเจ้าของโฟลเดอร์ไดรฟ์ของหลักสูตร
ออกไม่ได้
การดำเนินการที่เป็นไปได้: อธิบายสาเหตุที่ทำให้การดำเนินการล้มเหลวและแนะนำให้ผู้ใช้ โอนความเป็นเจ้าของโฟลเดอร์ไดรฟ์ของหลักสูตรไปยังผู้ใช้รายอื่น แล้วลองอีกครั้ง
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 ที่ระบุข้อมูล ตั้งค่าช่องเหล่านี้ได้เพียงช่องเดียวในคำขอเดียว
คุณยังคงดูรายการหลักสูตรที่มีผู้ใช้ที่เป็นนักเรียนและครูที่เฉพาะเจาะจงได้
โดยส่งคำขอแยกกัน 2 รายการ ก่อนอื่น ให้ดึงข้อมูลหลักสูตรของผู้ใช้ที่เป็นครูโดย
ส่งcourses.list()คำขอที่มีการป้อนข้อมูลในช่อง teacherId แล้ว
ส่งคำขอ courses.list() อีกรายการที่มีการป้อนข้อมูลในช่อง studentId
คำนวณส่วนที่ทับซ้อนกันของผลลัพธ์เพื่อรับรายการหลักสูตรที่
ตรงกันสำหรับผู้ใช้ทั้ง 2 ราย
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 แสดงว่าคำขอพยายามแก้ไขทรัพยากรที่เชื่อมโยงกับโปรเจ็กต์ Play Console อื่น
การดำเนินการที่เป็นไปได้: ระบุว่าแอปพลิเคชันของคุณไม่สามารถส่งคำขอตามที่ตั้งใจไว้ได้ โดยจะทำได้เฉพาะโปรเจ็กต์ Play Console ของรหัสไคลเอ็นต์ OAuth ที่สร้างทรัพยากร
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings แสดงว่าคำขอพยายามแก้ไขการตั้งค่าระยะเวลาการให้คะแนนในหลักสูตรที่ผู้ใช้ที่ส่งคำขอหรือเจ้าของหลักสูตรไม่มีใบอนุญาต Google Workspace for Education ที่เหมาะสม หรือผู้ใช้ที่ส่งคำขอไม่ใช่ครูผู้สอนของหลักสูตรหรือผู้ดูแลระบบโดเมน
การดำเนินการที่เป็นไปได้: ระบุว่าแอปพลิเคชันของคุณไม่สามารถส่งคำขอที่ต้องการเพื่ออัปเดตการตั้งค่าระยะเวลาการให้คะแนนเนื่องจากสถานะการออกใบอนุญาตหรือบทบาทในหลักสูตร คุณมอบหมายใบอนุญาตได้ในคอนโซลผู้ดูแลระบบของ Google
HTTP 429: RESOURCE_EXHAUSTED
ระบบจะแสดงผล RESOURCE_EXHAUSTED เมื่อไม่อนุญาตให้ดำเนินการที่ขอ
เนื่องจากทรัพยากรบางอย่าง เช่น โควต้าหรือความจุของเซิร์ฟเวอร์ หมด ข้อผิดพลาดประเภทคำขอเหล่านี้มักเกิดขึ้นเนื่องจากแอปของคุณสร้างโหลดมากเกินไป
หากไม่ต้องการให้ระบบเรียกใช้ขีดจำกัดเหล่านี้และเพิ่มความน่าเชื่อถือของแอปพลิเคชัน ให้ใช้กลไกการลองใหม่ กลไกการลองใหม่ที่ถูกต้องมีดังนี้
ใช้ Exponential Backoff ที่ถูกตัดทอนเพื่อลองส่งคำขออีกครั้งและเพิ่มอัตราการส่งข้อมูลของคำขอในสภาพแวดล้อมที่มีการเกิดขึ้นพร้อมกันให้สูงสุด
โปรดพิจารณาใช้ Exponential Backoff แบบย่อที่มีการสุ่มเพื่อหลีกเลี่ยงการชนกัน การใช้ Jitter จะช่วยให้คำขอสำเร็จได้เร็วขึ้นโดยการเพิ่ม การหน่วงเวลาแบบสุ่มซึ่งจะกระจายคำขอที่เพิ่มขึ้น
หากแอปพลิเคชันแสดงข้อผิดพลาด RESOURCE_EXHAUSTED เนื่องจากข้อจำกัดของโควต้า ให้ส่งคำขอเพิ่มโควต้า ดูข้อมูลเพิ่มเติมได้ที่บทความในศูนย์ช่วยเหลือเกี่ยวกับการตรวจสอบโควต้า API
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached แสดงว่าผู้ใช้ได้ลงทะเบียนเรียนหลักสูตรตามจำนวนสูงสุดที่อนุญาตใน 1 วันแล้ว ดูข้อมูลเพิ่มเติมได้ที่ส่วน "คำเชิญและขนาดของกลุ่ม" ในบทความในศูนย์ช่วยเหลือเรื่องทำความเข้าใจนโยบายและขีดจำกัดของ Groups
การดำเนินการที่เป็นไปได้: อธิบายสาเหตุที่ทำให้การลงทะเบียนไม่สำเร็จและแนะนำให้ผู้ใช้รอ 1 วันก่อนเข้าร่วมหลักสูตร
HTTP 500: INTERNAL
INTERNAL แสดงว่าเกิดข้อผิดพลาดที่ไม่คาดคิดขณะประมวลผลคำขอ
นอกจากนี้ คุณยังแก้ปัญหาข้อผิดพลาดของคำขอ INTERNAL ได้โดยใช้ Exponential Backoff เพื่อลองส่งคำขออีกครั้ง หากยังคงพบข้อผิดพลาด INTERNAL อยู่ คุณสามารถรายงานได้โดยการรายงานข้อบกพร่องในเครื่องมือติดตามปัญหาแบบสาธารณะของ Classroom API