使用Gdrive API服务账号上传文件报错:存储配额超限
问题分析与解决
核心原因
你混淆了个人Google Drive存储配额和GCP服务账号的独立Drive配额:
- 服务账号拥有自己独立的Google Drive存储空间,默认仅15GB免费额度,和你个人的200GB套餐完全不共享。
- 小文件能上传是因为服务账号的15GB配额还没耗尽,大文件加上之前上传的存量触发了配额上限。
验证方法
可以添加一段代码查询服务账号的实际存储使用情况:
from google.oauth2 import service_account from googleapiclient.discovery import build scopes = ['https://www.googleapis.com/auth/drive'] gdrive = 'D:/common-modules/gdrive.json' def check_service_account_quota(): creds = service_account.Credentials.from_service_account_file(gdrive, scopes=scopes) service = build('drive', 'v3', credentials=creds, cache_discovery=False) quota_info = service.about().get(fields="storageQuota").execute() print(f"服务账号已使用存储: {int(quota_info['storageQuota']['usage'])/1024/1024/1024:.2f} GB") print(f"服务账号总存储配额: {int(quota_info['storageQuota']['limit'])/1024/1024/1024:.2f} GB") check_service_account_quota()
解决办法
方案1:改用个人Drive存储(推荐)
将文件上传到你个人Drive的共享文件夹,使用你的200GB配额:
- 打开个人Google Drive,创建或选择目标文件夹,右键选择「共享」。
- 在共享窗口中,输入服务账号的邮箱(可从
gdrive.json的client_email字段获取),赋予「编辑」权限,保存。 - 修改脚本中的
folder_id为这个共享文件夹的ID,重新运行上传脚本。此时文件会存储在你的个人Drive,占用你的200GB配额。
方案2:清理服务账号Drive空间
如果需要继续使用服务账号的Drive,可通过API删除旧文件释放空间,或者编写脚本自动清理历史文件。
方案3:升级服务账号配额(仅适用于Google Workspace用户)
如果你使用Google Workspace,可联系管理员为服务账号分配更多存储空间。
内容的提问来源于stack exchange,提问作者acr
相关产品推荐
相关产品推荐

