Request Errors

リクエスト エラー

Classroom API エラーには、原因を特定してエラーを適切に処理できるように、エラーコードを含めることができます。コードによっては、リクエストを再試行したり、ユーザーに特定のアクションを行うように指示したりできます。

このページでは、考えられるエラーコードを HTTP コード別にグループ化して説明します。エラー メッセージの構造について詳しくは、エラー メッセージの構造をご覧ください。

このページでは、考えられるエラーコードを HTTP コード別にグループ化して説明します。特定のエラーコードを返すメソッドを確認するには、リファレンス ドキュメントをご覧ください。

HTTP 400: FAILED_PRECONDITION

ユーザーが制限に達したか、アプリの状態(CourseNotModifiable など)に達したために許可できない操作をユーザーが試みると、FAILED_PRECONDITION が返されます。FAILED_PRECONDITION を修正するには、ユーザーになんらかの操作を行ってから再試行するよう伝えます。場合によっては、ユーザーに代わって代替のエンドポイントを使用して状態を修正することもできます。

PendingInvitationExists

PendingInvitationExists は、すでにコースのオーナー権限を取得するように招待されていることを示します。このエラーは、コースのオーナー権限の移行が以前に開始されたものの、新しいオーナーによってまだ承認されていない場合に発生します。

CourseMemberLimitReached

CourseMemberLimitReached は、試行された操作がコースメンバー数の上限を超えることを示します。通常、このコードは students.create() によって返されます。詳しくは、ヘルプセンター記事「生徒をクラスに招待する」の「クラスの規模の制限」をご覧ください。

考えられる対応: 失敗の原因について説明し、不要なコースメンバーを削除することをユーザーに提案します

CourseNotModifiable

CourseNotModifiable は、関連するコースの状態が、(コースの状態自体を除いて)プロパティの変更できない状態であることを示します。

考えられる対応: コースを変更可能なコース状態に変更するようユーザーに促します。状態を変更するには、courses.patch() を使用します。他のプロパティを変更するリクエストでコースの状態を変更できます。

CourseTeacherLimitReached

CourseTeacherLimitReached は、リクエストされたアクションの数が、コースの教師数の上限を超過することを示します。通常、このコードは teachers.create() によって返されます。詳しくは、ヘルプセンター記事副担任をクラスに追加するの「クラスの規模の制限」をご覧ください。

考えられる対応: 失敗の原因を説明し、不要なコース教師を削除するようユーザーに提案します。アプリによっては、teachers.delete() を使用して、ユーザーに代わって教師の名簿を管理できます。

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached は、ユーザーがすでにグループの最大数に達しており、どのコースにも参加できないことを示します。通常、このコードは students.create() または teachers.create() によって返されます。詳しくは、ヘルプセンター記事生徒をクラスに招待するの「クラスの規模の制限」をご覧ください。

考えられる対応: 失敗の原因を説明し、お客様に参加していないコースを退出するよう提案します。さらに多くのコースに参加する必要がある場合は、ユーザーの追加アカウントを作成することを検討してください。アプリによっては、students.create() または teachers.delete() を使用して、ユーザーに代わって名簿を管理できます。

AttachmentNotVisible

AttachmentNotVisible は、指定された 1 つ以上の添付ファイルがユーザーに表示されないか、リクエストされた種類のものではないか、または存在しないことを示します。たとえば、ユーザーに共有されていないドライブのアイテムの場合は、このエラーが返されます。

考えられる対応: エラーの原因を記述し、ドライブ内のファイル ID などの識別子を再確認するようユーザーに提案します。また、添付ファイルを表示するための適切な権限がユーザーに付与されていることを確認してください。

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner は、コースのドライブ フォルダのオーナーを削除できないことを示します。

考えられる対応: エラーの原因を説明し、ユーザーがコースのドライブ フォルダの所有権を別のユーザーに譲渡してからもう一度お試しください。

CannotRemoveCourseOwner

CannotRemoveCourseOwner は、コースのオーナーを削除できないことを示します。

考えられる対応: 失敗の原因について説明し、コースのオーナーを削除できないことを提案します。ほとんどの場合、ユーザーは自分自身を削除しようとしますが、これは許可されません。

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete は、このクラスのオーナー権限の譲渡がまだ進行中であるため、コースのオーナーを削除できないことを示します。

考えられる対応: エラーの原因を記述し、クラスのオーナー権限の移行という非同期処理が完了するまで少し待ってから再試行するようユーザーにおすすめします。

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner は、オーナーがいないコースから教師を削除できないことを示します。

考えられる対応: 失敗の原因を説明し、教師が削除されない可能性を提案します。多くの場合、コース所有者のユーザー アカウントが削除されたため、コースの状態が無効になっています。

InactiveCourseOwner

InactiveCourseOwner は、コースのオーナーのアカウントが削除されているため、リクエストされたアクションが許可されていないことを示します。コースオーナーの管理者は、必要なアクションを行う前に、コースオーナーのアカウントを復元する必要があります。

考えられる対応: 失敗の原因を説明し、管理者がコースのオーナーのアカウントを復元してから操作を再試行するよう提案します。

IneligibleOwner

IneligibleOwner は、そのユーザーが副担任ではないため、コースのオーナーとして追加できないことを示します。

考えられるアクション: エラーの原因を記述します。リクエスト元のユーザーが管理者でない場合は、オーナーを更新する前に、まずそのユーザーにコースの教師となるための招待状を送信するよう提案します。依頼元のユーザーが管理者である場合は、まずそのユーザーをコースの副担任として追加するよう提案します。

UserCannotOwnCourse

UserCannotOwnCourse は、ユーザーをコースのオーナーとして追加できないことを示します。

考えられる対応: 失敗の原因について説明し、該当ユーザーをコースのオーナーとしてコースを作成できないことを提案します。管理者以外のユーザーがオーナーであるユーザーがコースを作成しようとすると、このエラーが表示されることがあります。オーナーとして指定されたユーザー アカウントが存在しない場合、またはユーザーがドメインに存在しない場合、ユーザーをリクエストしている管理者にこのエラーが表示されることがあります。

HTTP 429: RESOURCE_EXHAUSTED

割り当てやサーバー容量などのリソースが不足しているため、リクエストされたアクションが許可されていない場合は、RESOURCE_EXHAUSTED が返されます。この種のリクエスト エラーは通常、アプリで過度の負荷が発生したために発生します。

こうした制限が発生せずにアプリケーションの信頼性を高めるには、再試行メカニズムを使用します。有効な再試行メカニズムは次のとおりです。

  • 同時実行環境では、切り捨て型指数バックオフを使用してリクエストを再試行し、リクエストのスループットを最大化します。

  • 競合を回避するには、ジッターを伴う切り捨て型指数バックオフの使用を検討してください。ジッターを導入すると、ランダム化された遅延を導入してリクエストの急増を分散させることで、リクエストをより迅速に成功させることができます。

割り当ての制限が原因でアプリケーションから RESOURCE_EXHAUSTED エラーが返された場合は、割り当ての増加を送信してください。詳しくは、ヘルプセンター記事 API 割り当てをモニタリングするをご覧ください。

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached は、ユーザーが 1 日にすでに参加できるコース数の上限に達していることを示します。詳しくは、ヘルプセンター記事「Google グループのポリシーと制限について」の「グループの招待数と規模」をご覧ください。

考えられる対応: 失敗の原因について説明し、ユーザーに 1 日待ってからコースに参加するよう提案します。

HTTP 500: INTERNAL

INTERNAL は、リクエストの処理中に予期しないエラーが発生したことを示します。INTERNAL リクエスト エラーは、指数バックオフを使用してリクエストを再試行することで解決できることがよくあります。INTERNAL エラーが解決しない場合は、Classroom API の公開バグトラッカーでバグを報告して報告してください。