API Google Диска возвращает два уровня информации об ошибках:
- Коды ошибок 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
Эта ошибка возникает по нескольким причинам. Чтобы определить причину, оцените поле reason
возвращенного JSON. Эта ошибка чаще всего возникает из-за:
- Публикация прошла успешно, но электронное письмо с уведомлением было доставлено неправильно.
- Изменение списка управления доступом (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"
}
}
Чтобы исправить эту ошибку, обновите токен доступа, используя долгосрочный токен обновления. Если это не помогло, направьте пользователя через поток OAuth, как описано в разделе «Выбор областей действия API Google Диска» .
fileNotDownloadable
Эта ошибка возникает, когда вы пытаетесь использовать метод revisions.get
с параметром URL-адреса alt=media
в документе Google Workspace. Следующий образец JSON представляет собой представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "fileNotDownloadable",
"message": "Only files with binary content can be downloaded. Use Export with Docs Editors files."
}
],
"code": 403,
"message": "Only files with binary content can be downloaded. Use Export with Docs Editors files."
}
}
Чтобы исправить эту ошибку, попробуйте любое из следующих действий:
- Удалите параметр URL-адреса
alt=media
если вы хотите просмотреть метаданные определенной версии, например mimetype. - Используйте метод
files.export
для экспорта байтового содержимого документа Google Workspace. Дополнительную информацию см. в разделе Экспорт содержимого документа Google Workspace .
403 ошибки
Эти ошибки означают, что превышен лимит использования или у пользователя нет необходимых привилегий. Чтобы определить причину, оцените поле reason
возвращенного JSON.
Информацию об ограничениях Drive API см. в разделе Ограничения использования . Информацию об ограничениях папок на Диске см. в разделе Ограничения на файлы и папки .
activeItemCreationLimitExceeded
Ошибка activeItemCreationLimitExceeded
возникает, когда превышено ограничение количества элементов, созданных для одной учетной записи. Каждый пользователь может иметь до 500 миллионов элементов, созданных в учетной записи. Дополнительную информацию см. в разделе Лимит количества элементов пользователя .
{
"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."
}
}
Чтобы исправить эту ошибку:
Сообщите пользователю, что Диск не позволяет учетным записям создавать более 500 миллионов объектов.
Если пользователю необходимо создавать элементы в этой же учетной записи, попросите его окончательно удалить некоторые объекты. В противном случае они могут использовать другую учетную запись, которая уже соответствует требованиям.
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 Диска и предложите пользователю открыть файл.
- Попросите пользователя открыть файл с помощью контекстного меню «Открыть с помощью» в пользовательском интерфейсе Диска вашего приложения.
- Используйте метод
files.get
, чтобы проверить полеisAppAuthorized
ресурсаfiles
чтобы убедиться, что ваше приложение создало или открыло файл.
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"
}
}
Эта ошибка появляется, когда владелец приложения установил квоту для ограничения использования определенного ресурса. Чтобы исправить эту ошибку, снимите ограничения на использование квоты «Запросов в день» .
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."
}
}
Чтобы исправить эту ошибку:
- Сообщите пользователю, что домен не разрешает вашему приложению доступ к файлам на Диске.
- Попросите пользователя связаться с администратором домена, чтобы запросить доступ к вашему приложению.
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."
}
}
Чтобы исправить эту ошибку:
Добавьте участника на общий диск с помощью
role=owner
. Дополнительную информацию см. в разделе Общий доступ к файлам, папкам и дискам .Добавьте файл на общий диск. Дополнительные сведения см. в разделе Создание и заполнение папок .
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
, и отобразить пользовательский интерфейс, доступный только для чтения, при отсутствии разрешений.
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."
}
}
Чтобы исправить эту ошибку:
- Сообщите пользователю, что Диск не позволяет размещать папки глубиной более 100 уровней.
- Если пользователю необходимо создать еще одну вложенную папку, попросите его реорганизовать предполагаемую родительскую папку так, чтобы она имела глубину менее 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"
}
}
Чтобы исправить эту ошибку, попробуйте любое из следующих действий:
- Увеличьте квоту на пользователя в проекте Google Cloud. Для получения дополнительной информации запросите увеличение квоты .
- Пакетные запросы для объединения нескольких вызовов API в один HTTP-запрос.
- Используйте экспоненциальную отсрочку , чтобы повторить запрос.
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"
}
}
Чтобы исправить эту ошибку:
- Не отправляйте электронные письма при совместном использовании большого количества файлов.
- Если один пользователь отправляет многочисленные запросы от имени многих пользователей аккаунта 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."
}
}
Чтобы исправить эту ошибку:
Проверьте ограничения на объем хранилища в вашей учетной записи Диска. Дополнительную информацию см. в разделе «Ограничения на хранилище и загрузку Google Workspace» .
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."
}
}
Чтобы исправить эту ошибку, уменьшите количество объектов на общем диске. Общие диски со слишком большим количеством файлов могут быть затруднены при организации и поиске.
teamDriveHierarchyTooDeep
Ошибка teamDriveHierarchyTooDeep
возникает, когда превышено ограничение количества уровней вложенных папок на общем диске. Общий диск пользователя не может содержать более 100 уровней вложенности папок. Дополнительные сведения см. в разделе Ограничение глубины папки .
{
"error": {
"errors": [
{
"domain": "global",
"reason": "teamDriveHierarchyTooDeep",
"message": "The shared drive hierarchy depth will exceed the limit."
}
],
"code": 403,
"message": "The shared drive hierarchy depth will exceed the limit."
}
}
Чтобы исправить эту ошибку:
- Сообщите пользователю, что на общих дисках запрещено размещать папки глубиной более 100 уровней.
- Если пользователю необходимо создать еще одну вложенную папку, попросите его реорганизовать предполагаемую родительскую папку так, чтобы она имела глубину менее 100 уровней, или использовать другую родительскую папку, которая уже соответствует требованию.
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."
}
}
Чтобы исправить эту ошибку, попробуйте любое из следующих действий:
Попросите менеджера общего диска добавить вам соответствующие разрешения для действий, которые вы должны выполнить.
Просмотрите роли и разрешения Диска, чтобы узнать, кто может получать доступ к общим дискам и управлять ими. Дополнительную информацию об уровнях доступа также можно найти в разделе Создание общего диска .
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
, чтобы обозначить поддержку как «Мого диска», так и общих дисков.Если вам необходимо переместить папку на общий диск, используйте пользовательский интерфейс Диска. Дополнительную информацию см. в разделе Перемещение папок на общие диски от имени администратора .
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."
}
}
Чтобы исправить эту ошибку, используйте ярлыки Диска, чтобы добавить несколько ссылок на файл. Хотя ярлык может иметь только один родительский элемент, файл ярлыка можно скопировать в дополнительные места. Дополнительную информацию см. в разделе Создание ярлыка для файла на Диске .
UrlLeaseLimitExceeded
Эта ошибка возникает при попытке сохранить данные игры Google Play через ваше приложение. Следующий образец 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"
}
}
Чтобы исправить эту ошибку, попробуйте любое из следующих действий:
Увеличьте квоту на пользователя в проекте Google Cloud. Для получения дополнительной информации запросите увеличение квоты .
Если один пользователь отправляет многочисленные запросы от имени многих пользователей аккаунта Google Workspace, рассмотрите возможность создания сервисного аккаунта с делегированием на уровне домена с помощью параметра
quotaUser
.Используйте экспоненциальную отсрочку , чтобы повторить запрос.
Информацию об ограничениях Drive API см. в разделе Ограничения использования .
404 ошибки
Эти ошибки означают, что запрошенный ресурс недоступен или не существует.
notFound
Эта ошибка возникает, когда у пользователя нет прав на чтение файла или файл не существует. Следующий образец JSON представляет собой представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "File not found {fileId}"
}
],
"code": 404,
"message": "File not found: {fileId}"
}
}
Чтобы исправить эту ошибку:
- Если файл расположен на общем диске и вы используете метод
files.get
, убедитесь, что для параметра запросаsupportsAllDrives
установлено значениеtrue
. - Сообщите пользователю, что у него нет прав на чтение файла или что файл не существует.
- Попросите пользователя связаться с владельцем файла и запросить разрешение на доступ к файлу.
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, а не для всего сайта.
Ниже приведен список ошибок 5xx:
- 500 Ошибка серверной части
- 502 Неверный шлюз
- 503 Сервис недоступен
- 504 Тайм-аут шлюза
Чтобы исправить эту ошибку, используйте экспоненциальную отсрочку , чтобы повторить запрос.