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

如何通过Golang客户端库/REST API为Google Sheet添加协作者并设为公开只读?

解决Google Sheets添加协作者与设置公开只读的问题

你找不到Sheets API的权限管理接口是因为表格的协作权限属于Google Drive API的管理范畴,Sheets API仅负责表格内容的读写和格式操作,文件级别的权限控制需要使用Drive API来实现。

一、添加指定用户为编辑者

1. 引入Drive API依赖

确保项目中引入Drive v3的Go客户端库:

go get google.golang.org/api/drive/v3

2. 初始化Drive服务

可复用Sheets服务的上下文和认证信息:

import (
    "context"
    "log"

    "google.golang.org/api/drive/v3"
    "google.golang.org/api/sheets/v4"
)

// 假设已创建Sheets服务srv并拿到spreadsheet对象
driveSrv, err := drive.NewService(ctx)
if err != nil {
    log.Printf("Unable to retrieve Drive client: %v", err)
    return nil, err
}

3. 添加协作者的代码实现

创建权限对象,指定用户邮箱和角色,调用Drive API的权限创建接口:

// 添加单个编辑者
permission := &drive.Permission{
    EmailAddress: "person@gmail.com",
    Role:         "editor", // 可选值:owner, writer, reader, commenter等
    Type:         "user",
}

// 可选:设置是否发送通知邮件,默认true
req := driveSrv.Permissions.Create(spreadsheet.SpreadsheetId, permission)
req.SendNotificationEmail(false)

_, err = req.Do()
if err != nil {
    log.Printf("Failed to add collaborator: %v", err)
    return nil, err
}

二、设置表格为公开只读

通过创建anyone类型的权限,将表格设置为全网公开只读:

publicPermission := &drive.Permission{
    Role: "reader",
    Type: "anyone",
}

_, err = driveSrv.Permissions.Create(spreadsheet.SpreadsheetId, publicPermission).Do()
if err != nil {
    log.Printf("Failed to set public read-only: %v", err)
    return nil, err
}

注意事项

  • 确保你的Google Cloud项目已启用Google Drive API,并在OAuth2认证中添加了https://www.googleapis.com/auth/drive或细分权限(如https://www.googleapis.com/auth/drive.file仅操作创建的文件)
  • 权限角色说明:
    • reader:只读访问
    • writer:可编辑内容(即编辑者)
    • commenter:仅可添加评论
    • owner:文件所有者(需谨慎分配)

内容的提问来源于stack exchange,提问作者Walker O'Brien

相关产品推荐
方舟 Agent Plan

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

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