ข้อความแสดงข้อผิดพลาดที่พบบ่อยของ 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 แสดงว่าเพิ่มผู้ใช้เป็นเจ้าของหลักของหลักสูตรไม่ได้เนื่องจากผู้ใช้ไม่ได้เป็นครูผู้สอนร่วม

การดำเนินการที่เป็นไปได้ อธิบายสาเหตุที่ทำให้ล้มเหลว หากผู้ใช้ที่ขอไม่ใช่ผู้ดูแลระบบ ให้แนะนำให้ผู้ใช้ส่งคำเชิญให้ผู้ใช้เป็นครูในหลักสูตรก่อนที่จะอัปเดตเจ้าของ หากผู้ใช้ที่ขอเป็นผู้ดูแลระบบ ให้แนะนำให้ผู้ใช้ดังกล่าวเพิ่มผู้ใช้เป็นผู้สอนร่วมของ หลักสูตรก่อน

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 สำหรับผู้โทรที่มีใบอนุญาต Google Workspace for Education Fundamentals ระบบจะเพิ่มหรือเชิญบัญชีที่อยู่นอก Google Workspace for Education ไปยังหลักสูตรโดยตรงไม่ได้

การดำเนินการที่เป็นไปได้: อธิบายสาเหตุที่ทำให้เกิดข้อผิดพลาดและแนะนำให้ผู้โทร พิจารณาตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • แนะนำให้ผู้โทรแชร์ลิงก์คำเชิญให้เข้าร่วมหลักสูตรหรือรหัสของชั้นเรียนด้วยตนเอง โปรดทราบว่าผู้ดูแลระบบต้องกำหนดค่าคำเชิญนอกโดเมน ดูข้อมูลเพิ่มเติมได้ที่เชิญนักเรียนเข้าร่วมชั้นเรียน
  • แนะนำให้ผู้โทรอัปเกรดเป็นใบอนุญาต 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

HTTP 429: RESOURCE_EXHAUSTED

ระบบจะแสดงผล RESOURCE_EXHAUSTED เมื่อไม่อนุญาตให้ดำเนินการที่ขอ เนื่องจากทรัพยากรบางอย่าง เช่น โควต้าหรือความจุของเซิร์ฟเวอร์ หมด ข้อผิดพลาดประเภทคำขอเหล่านี้มักเกิดขึ้นเนื่องจากแอปของคุณสร้างโหลดมากเกินไป

หากไม่ต้องการให้ระบบเรียกใช้ขีดจำกัดเหล่านี้และเพิ่มความน่าเชื่อถือของแอปพลิเคชัน ให้ใช้กลไกการลองใหม่ กลไกการลองใหม่ที่ถูกต้องมีดังนี้

  • ใช้ Exponential Backoff ที่ถูกตัดทอนเพื่อลองส่งคำขออีกครั้งและเพิ่มปริมาณงานสูงสุด ของคำขอในสภาพแวดล้อมที่พร้อมกัน

  • โปรดพิจารณาใช้ Exponential Backoff แบบย่อที่มี Jitter เพื่อหลีกเลี่ยงการชนกัน การใช้ Jitter จะช่วยให้คำขอของคุณสำเร็จได้เร็วขึ้นโดยการเพิ่ม การหน่วงเวลาแบบสุ่มซึ่งจะกระจายการเพิ่มขึ้นของคำขอ

หากแอปพลิเคชันแสดงข้อผิดพลาด RESOURCE_EXHAUSTED เนื่องจากข้อจำกัดของโควต้า ให้ส่งคำขอเพิ่มโควต้า ดูข้อมูลเพิ่มเติมได้ที่บทความในศูนย์ช่วยเหลือเกี่ยวกับ ตรวจสอบโควต้า API

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached แสดงว่าผู้ใช้ได้เข้าร่วมหลักสูตรครบจำนวนสูงสุดที่อนุญาตใน 1 วันแล้ว ดูข้อมูลเพิ่มเติมได้ที่ส่วน "คำเชิญและขนาดของกลุ่ม" ในบทความทำความเข้าใจนโยบายและขีดจำกัดของ Groups ในศูนย์ช่วยเหลือ

การดำเนินการที่เป็นไปได้ อธิบายสาเหตุที่ทำให้การดำเนินการล้มเหลวและแนะนำให้ผู้ใช้รอ 1 วันก่อน เข้าร่วมหลักสูตร

HTTP 500: INTERNAL

INTERNAL แสดงว่าเกิดข้อผิดพลาดที่ไม่คาดคิดขณะประมวลผลคำขอ นอกจากนี้ คุณยังแก้ไขINTERNALข้อผิดพลาดของคำขอได้บ่อยครั้งโดยใช้ Exponential Backoff เพื่อลองส่งคำขออีกครั้ง หากINTERNALยังคงพบข้อผิดพลาดอยู่ คุณสามารถรายงานได้โดยการรายงานข้อบกพร่องในเครื่องมือติดตามปัญหาแบบสาธารณะของ Classroom API