Google Drive API 會傳回兩種層級的錯誤資訊:
- 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"
}
}
如要修正這項錯誤,請使用長期有效的更新憑證重新整理存取權杖。如果失敗,請引導使用者完成 OAuth 流程,詳情請參閱「選擇 Google Drive API 範圍」一節。
fileNotDownloadable
當您嘗試在 Google Workspace 文件中使用 revisions.get
方法搭配 alt=media
網址參數時,就會發生這項錯誤。以下 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."
}
}
如要修正這項錯誤,請嘗試下列任一方法:
- 如要查看特定修訂版本 (例如 mimetype) 的中繼資料,請移除
alt=media
網址參數。 - 使用
files.export
方法匯出 Google Workspace 文件的位元組內容。詳情請參閱「匯出 Google Workspace 文件內容」。
403 錯誤
這些錯誤表示已超出使用限制,或是使用者沒有正確的權限。如要判斷原因,請評估傳回 JSON 的 reason
欄位。
如要瞭解 Drive API 限制,請參閱「用量限制」一文。如要瞭解雲端硬碟資料夾限制,請參閱「檔案和資料夾限制」。
activeItemCreationLimitExceeded
如果單一帳戶建立的項目數量超過上限,就會發生 activeItemCreationLimitExceeded
錯誤。每位使用者最多可透過帳戶建立 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."
}
}
如要修正這項錯誤:
請告知使用者,雲端硬碟會限制帳戶建立的項目數量,最多為 5 億個。
如果使用者必須在同一帳戶中建立項目,請指示他們永久刪除部分物件。否則,他們可以使用已符合規定的其他帳戶。
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 中的「Open with」內容選單開啟檔案。
- 使用
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"
}
}
如果應用程式擁有者設定配額限制,限制特定資源的使用量,就會顯示這則錯誤訊息。如要修正這項錯誤,請移除「每天查詢次數」配額的使用上限。
domainPolicy
如果使用者網域的政策不允許應用程式存取 Google 雲端硬碟,就會發生這個錯誤。以下 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
方法擷取的結構描述中檢查使用者存取層級,並在缺少權限時顯示唯讀 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."
}
}
如要修正這項錯誤:
- 告知使用者,雲端硬碟不允許放置超過 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"
}
}
如要修正這項錯誤,請嘗試下列任一方法:
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
參數,表示支援「我的雲端硬碟」和共用雲端硬碟。如果必須將資料夾移至共用雲端硬碟,請使用雲端硬碟 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."
}
}
如要修正這項錯誤,請使用雲端硬碟捷徑,為檔案新增多個連結。雖然捷徑只能有一個父項,但捷徑檔案可以複製到其他位置。詳情請參閱「建立 Google 雲端硬碟檔案的捷徑」。
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 控制台的限制,也可能是 Drive 後端的限制。以下 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 Sites 中單一網頁的權限,而非整個網站。
以下是 5xx 錯誤的清單:
- 500 後端錯誤
- 502 閘道錯誤
- 503 服務無法使用
- 504 閘道逾時
如要修正這項錯誤,請使用指數輪詢重試要求。