Google Sheets API请求返回HttpError 403超出分享配额问题求助
Google Sheets导出程序403共享配额超限错误解决方案
错误原因
该错误是Google Drive共享操作配额超限触发的,核心问题是你每次运行程序都会调用driveService.permissions().create()接口给服务账号重复授予表格权限,这类共享操作有调用频率限制,高频重复调用就会触发报错,且重复授权本身属于多余操作。
解决方法
- 移除重复的权限创建逻辑
只需要给服务账号授权一次即可:你可以直接打开对应Google Sheets,点击右上角「共享」,把服务账号邮箱account@requests-329915.iam.gserviceaccount.com添加为编辑者,之后代码里可以完全删除Drive服务初始化、权限创建的相关代码,不需要每次运行都调用共享接口。 - 控制共享操作调用频率
如果你确实有批量共享表格的业务需求,可以在每次调用共享接口后添加1~2秒的等待延时,避免短时间内请求过于集中触发限速,示例如下:import time # 每次调用共享接口后添加延时 access = driveService.permissions().create( fileId = spreadsheetId, body = {'type': 'user', 'role': 'writer', 'emailAddress': 'account@requests-329915.iam.gserviceaccount.com'}, fields = 'id' ).execute() time.sleep(2) - 调整配额上限
如果业务侧确实需要高频调用共享接口,可以进入Google Cloud控制台对应项目的Drive API配额管理页,查看当前配额上限,符合要求的情况下可以提交配额提升申请。
修复后参考代码
import httplib2 import apiclient.discovery from oauth2client.service_account import ServiceAccountCredentials # 表格相关操作 CREDENTIALS_FILE = 'file_name.json' credentials = ServiceAccountCredentials.from_json_keyfile_name(CREDENTIALS_FILE, ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']) httpAuth = credentials.authorize(httplib2.Http()) # 选择使用sheets v4版本API service = apiclient.discovery.build('sheets', 'v4', http = httpAuth) spreadsheetId = '1oXzqYQ9HixjfkTJ7hmIVqrM7_uvYwPsHoEKqPdbaAgk' # 已删除多余的权限创建代码,手动授权后可直接调用sheets接口操作表格
内容的提问来源于stack exchange,提问作者Руслан Руслан
相关产品推荐
相关产品推荐

