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

如何使用Python的gspread库实现谷歌表格多用户共享?

解决gspread批量共享谷歌表格给多用户的问题

问题背景

我正在开发基于Python和gspread库的谷歌表格自动化脚本,目前可通过spreadSheet.share()实现单个用户共享,但无法直接共享给多个用户:

单个用户共享可用代码:

spreadSheet.share("example@gmail.com", perm_type='user', role='writer')

尝试直接传入邮箱列表无效:

spreadSheet.share(["email1@gmail.com", "email2@gmail.com"], perm_type='user', role='writer')

解决方案

方法一:循环调用gspread的share方法

gspread的share()方法不支持直接接收邮箱列表,可通过遍历列表逐个调用该方法实现批量共享,适合用户数量较少的场景:

# 假设spreadSheet是已初始化的gspread表格对象
email_list = ["email1@gmail.com", "email2@gmail.com", "email3@gmail.com"]

for email in email_list:
    # 可根据需求修改role为reader、commenter等
    spreadSheet.share(email, perm_type='user', role='writer')

方法二:使用Google Drive API批量请求

针对大量用户的场景,推荐用Google Drive API的批量请求功能,效率更高。以下是优化后的可运行代码:

from oauth2client.service_account import ServiceAccountCredentials
import gspread
from googleapiclient.discovery import build

# 配置权限范围,需包含表格和Drive的操作权限
scopes = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive'
]

# 加载服务账号凭证
cred = ServiceAccountCredentials.from_json_keyfile_name('你的JSON凭证文件路径', scopes)

# 初始化gspread客户端并获取目标表格
gc = gspread.authorize(cred)
spreadSheet = gc.open_by_key('你的谷歌表格ID')  # 或通过其他方式获取表格对象

# 初始化Drive API客户端
driveClient = build("drive", "v3", credentials=cred)

# 待共享的邮箱列表
email_recipients = ['user1@gmail.com', 'user2@gmail.com', 'user3@gmail.com']

# 创建批量请求对象
batch = driveClient.new_batch_http_request()

# 为每个邮箱添加权限创建请求
for email in email_recipients:
    batch.add(
        driveClient.permissions().create(
            fileId=spreadSheet.id,  # 自动获取表格的ID
            body={
                "role": "writer",  # 权限角色:writer/reader/commenter
                "type": "user",
                "emailAddress": email
            },
            sendNotificationEmail=True  # 是否发送共享通知邮件,可选
        )
    )

# 执行批量请求
response = batch.execute()
print("批量共享完成:", response)

方法对比

  • 方法一:实现简单,仅依赖gspread,无需额外配置Drive API;但用户数量多时请求次数多,效率较低。
  • 方法二:单批最多可处理100个用户请求,效率高;需依赖google-api-python-client库,且需确保服务账号有Drive API的操作权限。

内容的提问来源于stack exchange,提问作者Vignesh G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:45:33