Google Classroom API の一般的なエラー メッセージ

このページでは、Google Classroom API の一般的なエラー メッセージ、問題、および次のタイプのエラーに対する考えられるアクションについて説明します。

HTTP 400: FAILED_PRECONDITION

FAILED_PRECONDITION は、ユーザーが上限に達したか、CourseNotModifiable などのアプリケーションの状態が原因で、許可できないアクションを試みた場合に返されます。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() メソッドを使用して、ユーザーに代わって教師リストを管理できます。

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl は、リクエストされたアクションがコースのタイトルに URL を導入するため、許可されていないことを示します。コースのタイトルでは URL パターンはサポートされていません。

考えられるアクション __: 失敗の原因を説明し、ユーザーに title フィールドから URL パターンを削除するよう提案します。URL は description フィールドで許可されています。

CourseTopicLimitReached

CourseTopicLimitReached は、リクエストされたアクションがコースのトピックの最大許容数を超えることを示します。このコードは通常、 courses.topics.create() メソッドによって返されます。

考えられるアクション __: 失敗の原因を説明し、ユーザーに不要なトピックを削除するよう提案します。アプリに適用できる場合は、 courses.topics.delete() メソッドを使用して、ユーザーに代わってトピックを管理できます。

EmptyAssignees

EmptyAssignees は、リクエストされたアクションが対応する課題からすべての割り当てを削除することを示します。割り当てのない課題はサポートされていません。

考えられるアクション __: 失敗の原因を説明し、コースの オーナーがすべての割り当てを削除できないことを伝えます。

InactiveCourseOwner

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

考えられるアクション __: 失敗の原因を説明し、 オペレーションを再試行する前に管理者がコースのオーナーの アカウントを復元するよう提案します。

IneligibleOwner

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

考えられるアクション: 失敗の原因を説明します。リクエストしているユーザーが管理者でない場合は、オーナーを更新する前に、まずユーザーをコースの教師として招待するよう提案します。リクエストしているユーザーが管理者の場合は、まずユーザーをコースの副担任として追加するよう提案します。

ListCoursesStudentAndTeacherFilter

ListCoursesStudentAndTeacherFilter は、 courses.list() リクエストを行うと、 両方teacherId フィールドと studentId フィールドに値が入力された状態で発生します。1 つのリクエストで設定できるフィールドは 1 つだけです。

2 つのリクエストを別々に行うことで、特定の生徒と教師のユーザーを含むコースのリストを取得できます。まず、teacherId フィールドに値が入力された状態で courses.list() リクエストを行って、教師ユーザーのコースを取得します。次に、studentId フィールドに値が入力された状態で別の courses.list() リクエストを行います。 結果の共通部分を計算して、両方のユーザーに一致するコースのリストを取得します。

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 ライセンスをお持ちの呼び出し元の場合、信頼されていないドメイン外のユーザーをコースに直接追加または招待することはできません。

考えられるアクション __: 失敗の原因を説明し、呼び出し元に次のいずれかのオプションを 検討するよう提案します。

  • 呼び出し元と受信側のユーザーのドメインの両方を、互いの信頼できるドメインのリストに追加して、もう一度お試しください。
  • 発信者がコースの招待リンクまたはクラスコードを手動で共有するよう提案します。これには、管理者がドメイン外の招待を構成する必要があります。詳しくは、クラスに生徒を招待するをご覧ください。
  • 制限は Fundamentals ライセンスにのみ適用されるため、発信者に有料の Google Workspace for Education ライセンスにアップグレードするよう提案します。

ClassroomApiDisabled

ClassroomApiDisabled は、リクエストしているユーザーが Classroom API にアクセスできないことを示します。

考えられるアクション __: ユーザーに Classroom データへのアクセスを有効にする 手順を伝えます。ユーザーが間違ったアカウントを使用している可能性があるため、 ClassroomDisabledもご覧ください。

ClassroomDisabled

ClassroomDisabled は、リクエストしているユーザーが Classroom にアクセスできないことを示します。

考えられるアクション __: ユーザーに Classroom へのアクセスを有効にする 手順を伝えます。ユーザーが間違ったアカウントを使用している可能性もあるため、複数のアカウントを使用するへのリンクも提供して、正しいアカウントを選択できるようにします。

ExpiredAddOnToken

ExpiredAddOnToken は、API の呼び出しに使用されているアドオン トークンが期限切れであることを示します。

考えられるアクション __: リクエスト URL から新しい addOnToken クエリ パラメータを取得できるように、ページを更新するか、アドオンに再度ログインするようユーザーに促します。

InvalidAddOnToken

InvalidAddOnToken は、リクエストで渡されたアドオン トークンに、課題にアドオンの添付ファイルを作成する権限がないことを示します。

考えられるアクション __: このエラーは、ユーザーが Classroom のアカウントとは異なるアカウントでアドオンにログインした場合に発生することがあります。ブラウザの他のすべてのアカウントからログアウトするか、シークレット Chrome ウィンドウで Classroom を開くようユーザーに指示します。

ProjectPermissionDenied

ProjectPermissionDenied は、リクエストが別の Play Console プロジェクトに関連付けられたリソースを変更しようとしたことを示します。

考えられるアクション __: アプリケーションが目的の リクエストを行えないことを示します。リソースを作成した OAuth クライアント ID の Play Console プロジェクトでのみ作成できます。

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings は、リクエストしているユーザーまたはコースのオーナーが適切な Google Workspace for Education ライセンスを持っていないか、リクエストしているユーザーがコースの教師またはドメイン管理者ではないコースで、リクエストが採点期間の設定を変更しようとしたことを示します。

考えられるアクション __: ライセンスまたはコースのロールのステータスが原因で、アプリケーションが採点期間の設定を更新する目的の リクエストを行えないことを示します。ライセンスは Google 管理コンソールで割り当てることができます。

HTTP 429: RESOURCE_EXHAUSTED

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

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

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

  • 衝突を回避するには、ジッターを伴う切り捨て型指数バックオフを検討してください。 ジッターを導入すると、リクエストの急増を分散するランダムな遅延が発生し、リクエストがより迅速に成功するようになります。

割り当ての制限によりアプリケーションが RESOURCE_EXHAUSTED エラーを返す場合は、割り当ての増加をリクエストしてください。詳しくは、 API 割り当てをモニタリングするのヘルプセンター 記事をご覧ください。

UserCourseJoinRateLimitReached

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

考えられるアクション __: 失敗の原因を説明し、ユーザーにコースに参加するまで 1 日待つよう提案します。

HTTP 500: INTERNAL

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