ข้อความแสดงข้อผิดพลาดที่พบบ่อยของ Google Classroom API

หน้านี้อธิบายข้อความแสดงข้อผิดพลาด ปัญหา และ การดำเนินการที่เป็นไปได้บางอย่างของ Google Classroom API สำหรับข้อผิดพลาดประเภทต่อไปนี้

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