使用Google Sheets API设置表格权限遇AttributeError错误求助
问题解决建议
错误原因
你用sheets API的服务对象调用permissions()方法,但Google Sheets API不提供权限管理功能,权限操作属于Google Drive API的范畴,所以会抛出AttributeError。
修复步骤
- 确保你的Google Cloud项目已启用Drive API(和Sheets API一样,在Cloud控制台的API库中启用)
- 在代码中新增Drive API的服务实例,使用同一个服务账号凭据
- 通过Drive服务实例执行权限创建操作
修改后的完整代码
from google.oauth2.service_account import Credentials from googleapiclient.discovery import build # 加载服务账号凭据 creds = Credentials.from_service_account_file("key/key1.json") # 创建Sheets API服务实例 sheets_service = build("sheets", "v4", credentials=creds) # 创建表格 spreadsheet = { "properties": { "title": "Nowy arkusz" } } spreadsheet = sheets_service.spreadsheets().create(body=spreadsheet).execute() spreadsheet_id = spreadsheet.get("spreadsheetId") # 创建Drive API服务实例 drive_service = build("drive", "v3", credentials=creds) # 设置权限:允许任何人编辑 permission = { 'type': 'anyone', 'role': 'writer', } # 添加sendNotificationEmail=False避免服务账号无法发送通知邮件的报错 drive_service.permissions().create( fileId=spreadsheet_id, body=permission, sendNotificationEmail=False ).execute()
额外注意点
- 服务账号本身是独立的账号,如果你需要将权限共享给特定用户,需要在
permission中指定type='user'并添加emailAddress字段 - 如果运行时出现权限相关报错,检查服务账号是否有对应的Drive权限(在Cloud控制台的IAM中配置)
内容的提问来源于stack exchange,提问作者janullo789
相关产品推荐
相关产品推荐

