You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Sheets API设置表格权限遇AttributeError错误求助

问题解决建议

错误原因

你用sheets API的服务对象调用permissions()方法,但Google Sheets API不提供权限管理功能,权限操作属于Google Drive API的范畴,所以会抛出AttributeError。

修复步骤

  1. 确保你的Google Cloud项目已启用Drive API(和Sheets API一样,在Cloud控制台的API库中启用)
  2. 在代码中新增Drive API的服务实例,使用同一个服务账号凭据
  3. 通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:25:17