Google Drive服务账号只读异常:无法创建表格但可删除文件求助
问题:Google Drive服务账号只读异常(可删文件但无法创建Google Sheets)
现象说明
- 服务账号可正常执行文件删除操作,但无法创建新的Google Sheets
- 创建新表格时收到API错误:
Resource has been exhausted (e.g. check quota). Location[ - ] Reason[rateLimitExceeded] Domain[global]
- 查看旧表格时显示:
The file is view-only No edits can be made to this file. Contact file owner for details.
相关代码
可正常执行的删除代码
var del = oGooleDive.driveService.Files.Delete(file.Id); await del.ExecuteAsync();
无法正常执行的创建代码
Spreadsheet newSheet = new Spreadsheet(); SpreadsheetProperties properties = new SpreadsheetProperties(); properties.Title = ClientName + " " + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt"); newSheet.Properties = properties; var c = service.Spreadsheets.Create(newSheet);
解决方向
检查Google Sheets API配额
登录Google Cloud控制台,找到对应项目的Google Sheets API,查看配额使用情况。rateLimitExceeded明确是配额耗尽导致,可能是短时间内创建请求频率过高,或者当日配额已用完。可根据实际需求申请调高配额,或优化代码添加请求限流、重试机制。确认服务账号权限配置
虽然服务账号拥有Drive文件删除权限,但创建Google Sheets需要单独的https://www.googleapis.com/auth/spreadsheets权限,需确认已为服务账号授予该权限范围。同时检查服务账号在目标存放文件夹下是否拥有创建文件的权限,旧表格只读是服务账号对这些文件仅拥有查看权限,与新文件创建权限是独立的权限项。补全创建代码的执行步骤
当前给出的创建代码仅构建了请求对象,未发起实际的创建请求,需在最后添加执行语句:await c.ExecuteAsync();缺少这一步会导致请求未发送,也可能引发异常或无响应。
内容的提问来源于stack exchange,提问作者collin visser
相关产品推荐
相关产品推荐

