エラーを解決する。

Google Drive API は、次の 2 つのレベルのエラー情報を返します。

  • HTTP エラーコードとヘッダー メッセージ。
  • レスポンス本文の JSON オブジェクト。エラーの処理方法を決定するために役立つ追加の詳細が含まれます。

Google ドライブ アプリは、REST API の使用時に発生する可能性のあるすべてのエラーを検出して処理する必要があります。このガイドでは、特定の Drive API エラーの解決方法について説明します。

HTTP ステータス コードの概要

エラーコード 説明
200 - OK リクエストは成功します(これは HTTP リクエストが正常に終了した場合の標準のレスポンスです)。
400 - Bad Request リクエストでクライアント エラーが発生したため、リクエストを処理できません。
401 - Unauthorized リクエストに無効な認証情報が含まれています。
403 - Forbidden リクエストは受信され、認識されましたが、ユーザーにリクエストを実行する権限がありません。
404 - Not Found リクエストされたページが見つかりませんでした。
429 - Too Many Requests API へのリクエスト数が多すぎます。
500, 502, 503, 504 - Server Errors リクエストの処理中に予期しないエラーが発生しました。

400 エラー

これらのエラーは、リクエストが受け入れられないことを意味し、多くの場合、必須パラメータが欠落していることが原因です。

badRequest

このエラーは、コード内の次のいずれかの問題が原因で発生する可能性があります。

  • 必須項目またはパラメータが提供されていません。
  • 指定した値、または指定したフィールドの組み合わせが無効です。
  • 重複する親をドライブ ファイルに追加しようとしました。
  • ディレクトリ グラフにサイクルを作成する親を追加しようとしました。

次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "code": 400,
    "errors": [
      {
        "domain": "global",
        "location": "orderBy",
        "locationType": "parameter",
        "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order.",
        "reason": "badRequest"
      }
    ],
    "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order."
  }
}

このエラーを修正するには、message フィールドを確認し、それに応じてコードを調整します。

invalidSharingRequest

このエラーは、いくつかの原因で発生します。原因を特定するには、返された JSON の reason フィールドを評価します。このエラーは通常、次の場合に発生します。

  • 共有は成功しましたが、通知メールが正しく配信されませんでした。
  • このユーザーに対してアクセス制御リスト(ACL)の変更は許可されていません。

message フィールドは実際のエラーを示します。

共有は成功したが、通知メールが正しく配信されなかった

次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "invalidSharingRequest",
        "message": "Bad Request. User message: \"Sorry, the items were successfully shared but emails could not be sent to email@domain.com.\""
      }
    ],
    "code": 400,
    "message": "Bad Request"
  }
}

このエラーを修正するには、通知メールを宛先メールアドレスに送信できなかったため共有できなかったことをユーザー(共有者)に伝えます。ユーザーは、正しいメールアドレスを持ち、メールを受信できることを確認する必要があります。

このユーザーに対して ACL の変更が許可されていません

次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "invalidSharingRequest",
        "message": "Bad Request. User message: \"ACL change not allowed.\""
      }
    ],
    "code": 400,
    "message": "Bad Request"
  }
}

このエラーを修正するには、ファイルが属する Google Workspace ドメインの共有設定を確認します。設定によっては、ドメイン外との共有が禁止されている場合や、共有ドライブの共有が許可されていない場合があります。

401 エラー

これらのエラーは、リクエストに有効なアクセス トークンが含まれていないことを意味します。

authError

このエラーは、使用しているアクセス トークンが期限切れであるか無効な場合に発生します。このエラーは、リクエストされたスコープに対する承認がないことが原因で発生することもあります。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "Invalid Credentials",
        "locationType": "header",
        "location": "Authorization",
      }
    ],
    "code": 401,
    "message": "Invalid Credentials"
  }
}

このエラーを修正するには、有効期間の長い更新トークンを使用してアクセス トークンを更新します。失敗した場合は、Google Drive API のスコープを選択するで説明されているように、ユーザーに OAuth フローを案内します。

403 エラー

これらのエラーは、使用量上限を超えているか、ユーザーに適切な権限がないことを意味します。原因を特定するには、返された JSON の reason フィールドを評価します。

Drive API の制限について詳しくは、使用量上限をご覧ください。ドライブ フォルダの上限については、ファイルとフォルダの上限をご覧ください。

activeItemCreationLimitExceeded

アカウントごとに作成できるアイテム数の上限を超えると、activeItemCreationLimitExceeded エラーが発生します。各ユーザーは 1 つのアカウントで最大 5 億の アイテムを作成できます詳細については、ユーザー アイテムの上限をご覧ください。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "activeItemCreationLimitExceeded",
    "message": "This account has exceeded the creation limit of 500 million items. To create more items, permanently delete some items."
   }
  ],
  "code": 403,
  "message": "This account has exceeded the creation limit of 500 million items. To create more items, permanently delete some items."
 }
}

このエラーを解決するには:

  1. ドライブではアカウントで 5 億を超えるアイテムを作成できないことをユーザーに伝えます。

  2. ユーザーが同じアカウントでアイテムを作成する必要がある場合は、一部のオブジェクトを完全に削除するようにユーザーに指示してください。それ以外の場合は、すでに要件を満たしている別のアカウントを使用できます。

appNotAuthorizedToFile

このエラーは、アプリの ACL にアプリが登録されていない場合に発生します。このエラーにより、ユーザーはアプリでファイルを開けなくなります。次の JSON サンプルは、このエラーを表しています。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "appNotAuthorizedToFile",
        "message": "The user has not granted the app {appId} {verb} access to the file {fileId}."
      }
    ],
    "code": 403,
    "message": "The user has not granted the app {appId} {verb} access to the file {fileId}."
  }
}

このエラーを解決するには、次のいずれかを試してください。

  • Google ドライブ選択ツールを開き、ファイルを開くようにユーザーに促します。
  • アプリのドライブ UI で [アプリで開く] コンテキスト メニューを使用してファイルを開くようユーザーに指示します。
  • files.get メソッドを使用して、files リソースの isAppAuthorized フィールドを確認し、アプリがファイルを作成または開いたことを確認します。

cannotModifyInheritedTeamDrivePermission

このエラーは、ユーザーが共有ドライブ内のアイテムに継承された権限を変更しようとした場合に発生します。継承された権限を共有ドライブ内のアイテムから削除することはできません。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "cannotModifyInheritedTeamDrivePermission",
        "message": "Cannot update or delete an inherited permission on a shared drive item."
      }
    ],
    "code": 403,
    "message": "Cannot update or delete an inherited permission on a shared drive item."
  }
}

このエラーを修正するには、ユーザーは、継承元の直接的または間接的な親アイテムに対する権限を調整する必要があります。詳細については、権限の伝播をご覧ください。また、permissions.permissionDetails リソースを取得して、この共有ドライブ アイテムに対する権限が継承されているか、直接適用されているかを確認することもできます。

dailyLimitExceeded

このエラーは、プロジェクトの API の上限に達した場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "dailyLimitExceeded",
        "message": "Daily Limit Exceeded"
      }
    ],
    "code": 403,
    "message": "Daily Limit Exceeded"
  }
}

このエラーは、アプリケーションのオーナーが、特定のリソースの使用量を制限する割り当て上限を設定している場合に表示されます。このエラーを修正するには、「1 日あたりのクエリ数」割り当ての使用量の上限を解除します。

domainPolicy

このエラーは、ユーザーのドメインのポリシーがアプリによるドライブへのアクセスを許可していない場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "domainPolicy",
        "message": "The domain administrators have disabled Drive apps."
      }
    ],
    "code": 403,
    "message": "The domain administrators have disabled Drive apps."
  }
}

このエラーを解決するには:

  1. アプリがドライブ内のファイルにアクセスすることがドメインで許可されていないことをユーザーに通知します。
  2. ドメイン管理者に連絡してアプリのアクセス権をリクエストするようユーザーに指示します。

fileOwnerNotMemberOfTeamDrive

このエラーは、ファイルのオーナーがメンバーでない場合に、ファイルを共有ドライブに移動しようとした場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "fileOwnerNotMemberOfTeamDrive",
        "message": "Cannot move a file into a shared drive as a writer when the owner of the file is not a member of that shared drive."
      }
    ],
    "code": 403,
    "message": "Cannot move a file into a shared drive as a writer when the owner of the file is not a member of that shared drive."
  }
}

このエラーを解決するには:

  1. role=owner を使用して共有ドライブにメンバーを追加します。詳細については、ファイル、フォルダ、ドライブを共有するをご覧ください。

  2. ファイルを共有ドライブに追加します。詳細については、フォルダを作成してデータを入力するをご覧ください。

fileWriterTeamDriveMoveInDisabled

このエラーは、ドメイン管理者が role=writer を持つユーザーに共有ドライブへのアイテムの移動を許可していない場合に発生します。アイテムを移動しようとしたユーザーの権限は、移動先の共有ドライブで許可されている権限よりも少なくなります。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "fileWriterTeamDriveMoveInDisabled",
        "message": "The domain administrator has not allowed writers to move items into a shared drive."
      }
    ],
    "code": 403,
    "message": "The domain administrator has not allowed writers to move items into a shared drive."
  }
}

このエラーを修正するには、コピー元とコピー先の共有ドライブで同じ管理者ユーザー アカウントを使用します。

insufficientFilePermissions

このエラーは、ユーザーにファイルへの書き込みアクセス権がなく、アプリがファイルを変更しようとした場合に発生します。次の JSON サンプルは、このエラーを表します。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "insufficientFilePermissions",
        "message": "The user does not have sufficient permissions for file {fileId}."
      }
    ],
    "code": 403,
    "message": "The user does not have sufficient permissions for file {fileId}."
  }
}

このエラーを修正するには、ファイルのオーナーに連絡して編集権限をリクエストするようユーザーに伝えます。また、files.get メソッドで取得したメタデータのユーザー アクセスレベルを確認し、権限がない場合は読み取り専用の UI を表示できます。

myDriveHierarchyDepthLimitExceeded

ネストされたフォルダレベル数が上限を超えると、myDriveHierarchyDepthLimitExceeded エラーが発生します。ユーザーのマイドライブには、100 レベルを超えるネストされたフォルダを含めることはできません。詳細については、フォルダ深度の上限をご覧ください。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "myDriveHierarchyDepthLimitExceeded",
    "message": "Your My Drive can't contain more than 100 levels of folders. For details, see https://developers.google.com/drive/api/guides/handle-errors#nested-folder-levels."
   }
  ],
  "code": 403,
  "message": "Your My Drive can't contain more than 100 levels of folders. For details, see https://developers.google.com/drive/api/guides/handle-errors#nested-folder-levels."
 }
}

このエラーを解決するには:

  1. ドライブでは 100 レベルを超えるフォルダは配置できないことをユーザーに知らせます。
  2. ネストされた別のフォルダをユーザーが作成する必要がある場合は、目的の親フォルダを深さ 100 レベル未満に再編成するか、要件をすでに満たしている別の親フォルダを使用するように指示してください。

numChildrenInNonRootLimitExceeded

このエラーは、フォルダの子(フォルダ、ファイル、ショートカット)の数が上限を超えた場合に発生します。同じフォルダ内に直接フォルダ、ファイル、ショートカットを作成できる場合、アイテム数の上限は 500,000 個です。サブフォルダにネストされたアイテムは、この 500,000 アイテムの制限にカウントされません。ドライブ フォルダの制限について詳しくは、Google ドライブのフォルダ制限をご覧ください。

次の JSON サンプルは、このエラーの表現です。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "numChildrenInNonRootLimitExceeded",
    "message": "The limit for this folder's number of children (files and folders) has been exceeded."
   }
  ],
  "code": 403,
  "message": "The limit for this folder's number of children (files and folders) has been exceeded."
 }
}

このエラーを解決するには、次のいずれかを試してください。

  • ドライブでアイテム数が 500,000 個を超えるフォルダは管理できないことをユーザーに伝えます。
  • ユーザーが完全なフォルダにアイテムをさらに追加する必要がある場合は、500,000 個未満になるようにフォルダを再編成するか、すでにアイテム数が少ない同様のフォルダを使用するように指示してください。

rateLimitExceeded

このエラーは、プロジェクトのレート制限に達した場合に発生します。この上限は、リクエストの種類によって異なります。次の JSON サンプルは、このエラーを表します。

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Rate Limit Exceeded",
    "reason": "rateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

このエラーを解決するには、次のいずれかを試してください。

sharingRateLimitExceeded

このエラーは、ユーザーが共有の上限に達した場合に発生します。多くの場合、メールの上限とリンクされています。次の JSON サンプルは、このエラーの表現です。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "message": "Rate limit exceeded. User message: \"These item(s) could not be shared because a rate limit was exceeded: filename",
    "reason": "sharingRateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

このエラーを解決するには:

  1. 大量のファイルを共有している場合はメールを送信しない。
  2. 1 人のユーザーが Google Workspace アカウントの多数のユーザーに代わって多数のリクエストを行っている場合は、quotaUser パラメータを使用してドメイン全体の委任が設定されているサービス アカウントを検討してください。

storageQuotaExceeded

このエラーは、ユーザーが保存容量の上限に達した場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "message": "The user's Drive storage quota has been exceeded.",
    "reason": "storageQuotaExceeded",
   }
  ],
  "code": 403,
  "message": "The user's Drive storage quota has been exceeded."
 }
}

このエラーを解決するには:

  1. ドライブ アカウントの保存容量の上限をご確認ください。詳細については、Google Workspace のストレージとアップロードの上限をご覧ください。

  2. Google ドライブ ストレージ内のファイルを管理する

  3. Google の保存容量を追加購入する

teamDriveFileLimitExceeded

このエラーは、ユーザーが共有ドライブの厳格なアイテム制限を超過しようとした場合に発生します。ユーザーの共有ドライブ内の各フォルダには、ファイル、フォルダ、ショートカットを含むアイテム数の上限が 500,000 個あります。この上限はストレージの使用量ではなく、アイテム数に基づいています。詳しくは、Google ドライブでの共有ドライブの制限をご覧ください。

次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDriveFileLimitExceeded",
        "message": "The file limit for this shared drive has been exceeded."
      }
    ],
    "code": 403,
    "message": "The file limit for this shared drive has been exceeded."
  }
}

このエラーを修正するには、共有ドライブ内のアイテムの数を減らしてください。共有ドライブにファイルが多すぎると、整理や検索が難しくなる場合があります。

teamDriveMembershipRequired

このエラーは、ユーザーがメンバーではない共有ドライブにアクセスしようとした場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDriveMembershipRequired",
        "message": "The attempted action requires shared drive membership."
      }
    ],
    "code": 403,
    "message": "The attempted action requires shared drive membership."
  }
}

このエラーを解決するには、次のいずれかを試してください。

  1. 共有ドライブの管理者に連絡して、実行する必要がある操作に必要な権限の付与を依頼してください。

  2. ドライブのロールと権限を確認して、共有ドライブにアクセスして管理できるユーザーを確認します。アクセスレベルに関するその他の情報については、共有ドライブを作成するをご覧ください。

teamDrivesFolderMoveInNotSupported

このエラーは、ユーザーがマイドライブから共有ドライブにフォルダを移動しようとした場合に発生します。次の JSON サンプルは、このエラーを表します。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDrivesFolderMoveInNotSupported",
        "message": "Moving folders into shared drives is not supported."
      }
    ],
    "code": 403,
    "message": "Moving folders into shared drives is not supported."
  }
}

このエラーを解決するには、次のいずれかを試してください。

  • Drive API を使用して、フォルダから共有ドライブに個々のアイテムを移動する。supportsAllDrives=true パラメータを設定して、マイドライブと共有ドライブの両方のサポートを示します。

  • フォルダを共有ドライブに移動する必要がある場合は、ドライブの UI を使用します。詳しくは、管理者としてフォルダを共有ドライブに移動するをご覧ください。

teamDrivesParentLimit

このエラーは、ユーザーが共有ドライブ内のアイテムに複数の親を追加しようとした場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDrivesParentLimit",
        "message": "A shared drive item must have exactly one parent."
      }
    ],
    "code": 403,
    "message": "A shared drive item must have exactly one parent."
  }
}

このエラーを修正するには、ドライブのショートカットを使用して 1 つのファイルに複数のリンクを追加します。ショートカットの親は 1 つだけですが、ショートカット ファイルは追加の場所にコピーできます。詳しくは、ドライブ ファイルへのショートカットを作成するをご覧ください。

UrlLeaseLimitExceeded

このエラーは、アプリから Google Play Games のデータを保存しようとした場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "UrlLeaseLimitExceeded",
    "message": "Too many pending uploads for this snapshot. Please finish or cancel some before creating more."
   }
  ],
  "code": 403,
  "message": "Too many pending uploads for this snapshot. Please finish or cancel some before creating more."
 }
}

このエラーを修正するには、新しいスナップショットを作成する前に、スナップショットのアップロードを完了またはキャンセルします。

userRateLimitExceeded

このエラーは、ユーザーごとの上限に達した場合に発生します。これは、Google Cloud コンソールからの上限またはドライブのバックエンドからの上限の場合があります。次の JSON サンプルは、このエラーの表現です。

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceeded",
    "message": "User Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded"
 }
}

このエラーを解決するには、次のいずれかを試してください。

Drive API の制限について詳しくは、使用量上限をご覧ください。

404 エラー

これらのエラーは、リクエストされたリソースにアクセスできないか、存在しないことを意味します。

notFound

このエラーは、ユーザーにファイルへの読み取りアクセス権がない場合、またはファイルが存在しない場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "notFound",
        "message": "File not found {fileId}"
      }
    ],
    "code": 404,
    "message": "File not found: {fileId}"
  }
}

このエラーを解決するには:

  1. ファイルが共有ドライブにあり、files.get メソッドを使用している場合は、supportsAllDrives クエリ パラメータが true に設定されていることを確認します。
  2. ファイルへの読み取りアクセス権がないか、ファイルが存在しないことをユーザーに通知します。
  3. ファイルのオーナーに連絡してファイルに対する権限をリクエストするようユーザーに指示します。

429 エラー

これらのエラーは、あまりに多くのリクエストが API にあまりにも早く送信されたことを意味します。

rateLimitExceeded

このエラーは、ユーザーが一定時間内に送信したリクエストが多すぎる場合に発生します。次の JSON サンプルは、このエラーの表現です。

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "rateLimitExceeded",
        "message": "Rate Limit Exceeded"
      }
    ],
    "code": 429,
    "message": "Rate Limit Exceeded"s
  }
}

このエラーを修正するには、指数バックオフを使用してリクエストを再試行します。

500、502、503、504 エラー

これらのエラーは、リクエストの処理中に予期しないサーバーエラーが発生した場合に発生します。リクエストのタイミングが別のリクエストと重複している、サポートされていないアクションのリクエスト(サイト全体ではなく、Google サイトで 1 つのページの権限を更新しようとするなど)が原因で、さまざまな問題が考えられます。

5xx エラーは次のとおりです。

  • 500 バックエンド エラー
  • 502 Bad Gateway(不正なゲートウェイ)
  • 503 Service Unavailable(サービス利用不可)
  • 504 Gateway Timeout(ゲートウェイ タイムアウト)

このエラーを修正するには、指数バックオフを使用してリクエストを再試行します。