このページでは、次のタイプのエラーについて、一般的な Google Classroom API のエラー メッセージ、問題、考えられるアクションについて説明します。
- HTTP 400:
FAILED_PRECONDITION
- HTTP 403:
PERMISSION_DENIED
- HTTP 429:
RESOURCE_EXHAUSTED
- HTTP 500:
INTERNAL
HTTP 400: FAILED_PRECONDITION
ユーザーが上限に達したか、CourseNotModifiable
などのアプリの状態が原因で許可できない操作を試みると、FAILED_PRECONDITION
が返されます。FAILED_PRECONDITION
を修正するには、ユーザーに何らかの操作を行うよう指示してから、再試行します。場合によっては、代替エンドポイントを使用してユーザーの代わりに状態を修正することもあります。
AttachmentNotVisible
AttachmentNotVisible
は、指定された 1 つ以上の添付ファイルがユーザーに表示されない、リクエストされたタイプではない、または存在しないことを示します。たとえば、ユーザーと共有されていないドライブ アイテムの場合、このエラーが返されます。
考えられる対応: エラーの原因を説明し、ユーザーが指定した識別子(ドライブ ファイル ID など)を再確認するようユーザーに提案します。また、ユーザーが添付ファイルを表示する適切な権限を持っていることを確認します。
CannotRemoveCourseFolderOwner
CannotRemoveCourseFolderOwner
は、コースのドライブ フォルダのオーナーを削除できないことを示します。
考えられる対応: エラーの原因を説明し、コースのドライブ フォルダのオーナー権限を別のユーザーに譲渡して、もう一度試すようユーザーに提案します。
CannotRemoveCourseOwner
CannotRemoveCourseOwner
は、コースのオーナーを削除できないことを示します。
考えられる対応: 失敗の原因を説明し、コースの所有者を削除できない可能性があることを伝えます。ほとんどの場合、ユーザーは自分自身を削除しようとしていますが、これは許可されていません。
CannotRemoveCourseOwnerTransferIncomplete
CannotRemoveCourseOwnerTransferIncomplete
は、このクラスの所有権の移行がまだ進行中であるため、コースの所有者を削除できないことを示します。
考えられる対応: 失敗の原因を説明し、クラスの所有権の移行という非同期アクションが完了するまでしばらく待ってから、もう一度試すようユーザーに提案します。
CannotRemoveTeacherWithNoCourseOwner
CannotRemoveTeacherWithNoCourseOwner
は、オーナーがいないコースから教師を削除できないことを示します。
考えられる対応: 失敗の原因を説明し、教師が削除されない可能性があることを伝えます。ほとんどの場合、コースのオーナーのユーザー アカウントが削除され、コースが無効な状態になっています。
CourseMemberLimitReached
CourseMemberLimitReached
は、試行された操作がコースのメンバーの最大許容数を超えることを示します。このコードは通常、students.create()
によって返されます。詳しくは、生徒をクラスに招待するのヘルプセンター記事の「クラスのサイズの制限」セクションをご覧ください。
考えられる対応: エラーの原因を説明し、不要なコースメンバーを削除するようユーザーに提案します。
CourseNotModifiable
CourseNotModifiable
は、関連するコースが、そのプロパティ(コースの状態自体を除く)を変更できない状態であることを示します。
考えられる対応:
コースを変更可能なコースの状態に変更するようユーザーに促します。状態を変更するには、courses.patch()
を使用します。コースの状態は、他のプロパティを変更するリクエストで変更できます。
CourseTeacherLimitReached
CourseTeacherLimitReached
は、リクエストされたアクションがコースの教師の最大許容数を超えることを示します。このコードは通常、teachers.create()
メソッドによって返されます。詳しくは、クラスに共同担任を追加するのヘルプセンター記事の「クラスのサイズの制限」セクションをご覧ください。
考えられる対応:
エラーの原因を説明し、不要なコースの教師を削除するようユーザーに提案します。アプリに該当する場合、teachers.delete()
メソッドを使用して、ユーザーに代わって教師名簿を管理できます。
CourseTopicLimitReached
CourseTopicLimitReached
は、リクエストされたアクションがコース内のトピックの最大許容数を超えることを示します。このコードは通常、courses.topics.create()
メソッドによって返されます。
考えられる対応:
失敗の原因を説明し、不要なトピックを削除するようユーザーに提案します。アプリに該当する場合は、courses.topics.delete()
メソッドを使用して、ユーザーに代わってトピックを管理できます。
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
は、ユーザーをコースに直接追加できないことを示します。このコードは、ドメイン管理者がコースにユーザーを追加しようとしたときに、そのユーザーにメールアドレスがないか、ドメインに属していない場合に発生します。
考えられる対応: エラーの原因を説明し、ドメイン管理者にユーザー アカウントが存在し、コース管理者のドメイン内にあることを確認するよう提案します。
ClassroomApiDisabled
ClassroomApiDisabled
は、リクエスト元のユーザーが Classroom API にアクセスできないことを示します。
考えられる対応: Classroom データへのアクセスを有効にする手順をユーザーに案内します。 ユーザーが間違ったアカウントを使用している可能性があるため、ClassroomDisabled も参照してください。
ClassroomDisabled
ClassroomDisabled
は、リクエストしているユーザーが Classroom にアクセスできないことを示します。
考えられる対応: Classroom へのアクセスを有効にする手順をユーザーに案内します。ユーザーが間違ったアカウントを使用している可能性もあるため、複数のアカウントを使用するためのリンクを提供して、ユーザーが正しいアカウントを選択できるようにすることもできます。
ExpiredAddOnToken
ExpiredAddOnToken
は、API への呼び出しに使用されているアドオン トークンが期限切れであることを示します。
考えられる対応: ユーザーにページを更新するか、アドオンに再度ログインするよう促し、リクエスト URL から新しい addOnToken
クエリ パラメータを取得できるようにします。
InvalidAddOnToken
InvalidAddOnToken
は、リクエストで渡されたアドオン トークンが課題にアドオンの添付ファイルを作成する権限を持っていないことを示します。
考えられるアクション: このエラーは、ユーザーが Classroom のアカウントとは異なるアカウントでアドオンにログインした場合に発生することがあります。ブラウザで他のすべてのアカウントからログアウトするか、シークレット モードの Chrome ウィンドウで Classroom を開くようユーザーに指示します。
ProjectPermissionDenied
ProjectPermissionDenied
は、リクエストが別のデベロッパー コンソール プロジェクトに関連付けられたリソースを変更しようとしたことを示します。
考えられるアクション: アプリケーションが意図したリクエストを行えないことを示します。リソースを作成した OAuth クライアント ID の Developer Console プロジェクトでのみ作成できます。
UserIneligibleToUpdateGradingPeriodSettings
UserIneligibleToUpdateGradingPeriodSettings
は、リクエストを行ったユーザーまたはコースのオーナーが適切な Google Workspace for Education ライセンスを持っていないコースで、リクエストが成績期間の設定を変更しようとしたか、リクエストを行ったユーザーがコースの教師またはドメイン管理者ではないことを示します。
考えられるアクション: ライセンスまたはコースの役割のステータスが原因で、採点期間の設定を更新するリクエストをアプリケーションが実行できないことを示します。ライセンスは Google 管理コンソールで割り当てることができます。
HTTP 429: RESOURCE_EXHAUSTED
RESOURCE_EXHAUSTED
は、割り当てやサーバー容量などのリソースが不足しているため、リクエストされたアクションが許可されていない場合に返されます。このようなタイプのリクエスト エラーは通常、アプリが過剰な負荷を生成したことが原因で発生します。
これらの制限を回避し、アプリケーションの信頼性を高めるには、再試行メカニズムを使用します。有効な再試行メカニズムは次のとおりです。
切り捨て型指数バックオフを使用してリクエストを再試行し、同時実行環境におけるリクエストのスループットを最大化します。
競合を回避するには、ジッターを伴う切り捨て型指数バックオフを検討してください。ジッターを導入すると、リクエストの急増を分散するランダムな遅延が発生し、リクエストがより迅速に成功するようになります。
割り当て制限が原因でアプリケーションから RESOURCE_EXHAUSTED
エラーが返された場合は、割り当ての増加を送信します。詳細については、Monitor API quotas のヘルプセンター記事を参照してください。
UserCourseJoinRateLimitReached
UserCourseJoinRateLimitReached
は、ユーザーが 1 日に参加できるコースの上限数に達していることを示します。詳しくは、Google グループのポリシーと制限についての「グループへの招待とグループのサイズ」をご覧ください。
考えられる対応: エラーの原因を説明し、コースに参加するまで 1 日待つようユーザーに提案します。
HTTP 500: INTERNAL
INTERNAL
は、リクエストの処理中に予期しないエラーが発生したことを示します。INTERNAL
リクエスト エラーは、指数バックオフを使用してリクエストを再試行することで解決できる場合もあります。INTERNAL
エラーが解決しない場合は、Classroom API の公開バグトラッカーでバグを報告してください。