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

服务账号读写Google Sheets所需的精确权限有哪些

Google Sheets 服务账号最小读写权限配置

别给服务账号绑项目级Editor角色,那个角色带全GCP项目的资源操作权限,冗余度极高,按下面两层配置就能满足Node脚本的读写需求,没有多余权限。

1. GCP侧IAM权限配置

你可以自定义角色,只绑定你实际需要的Sheets相关权限,不要用项目级基础角色:

  • 仅读写单元格内容(无修改表格结构、格式需求):
    • sheets.spreadsheets.get:调用Sheets API的基础权限,用于读取表格元数据、工作表列表
    • sheets.spreadsheets.values.get:读取单元格内容
    • sheets.spreadsheets.values.update:修改/写入单元格内容
    • sheets.spreadsheets.values.append:表格末尾追加行(有追加需求再加,不需要可以去掉)
  • 如果需要修改表格结构(增删工作表、调整行列、改格式、合并单元格等),额外加sheets.spreadsheets.batchUpdate权限即可。

嫌自定义角色麻烦的话,可以直接用GCP预定义的Google Sheets API 编辑者角色(角色ID:roles/sheets.editor),这个角色是Sheets服务专属,只包含Sheets API的全量操作权限,没有其他GCP服务的冗余权限,比项目Editor安全很多。

2. 单文件共享配置

GCP侧API权限配完后,打开你要操作的目标Google Sheets文件,点右上角「共享」,把服务账号的邮箱添加为协作者,权限选编辑者即可。这个权限是单文件级的,仅对当前表格生效,不会给服务账号开放其他文件、其他GCP资源的操作权。

Node侧调用注意点

用官方googleapis包做鉴权时,scope只需要配Sheets读写的专属scope即可,不要申请全量Drive权限,示例代码:

const { google } = require('googleapis');
// 初始化鉴权客户端
const auth = new google.auth.GoogleAuth({
  keyFile: './你的服务账号密钥路径.json',
  scopes: ['https://www.googleapis.com/auth/spreadsheets'], // 仅Sheets读写scope
});
// 初始化Sheets客户端
const sheetsClient = google.sheets({ version: 'v4', auth });

避坑提示:不要给服务账号分配项目级的roles/editor基础角色,该角色默认包含计算引擎、存储、数据库等GCP全品类服务的操作权限,一旦密钥泄露风险极高。

内容的提问来源于stack exchange,提问作者Nicholas O'Connell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:39:12