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

使用Python读取共享Google Sheet遇权限及导入错误求助

看起来你在使用gspread访问Google Sheet时遇到了两个棘手的问题,我来帮你逐个解决:

问题1:ImportError: cannot import name 'opentype'

首先看你贴的第一段代码,第一行存在明显的语法错误!你把两个import语句错误地合并在了一行,正确的写法应该拆分成两行:

import gspread
from oauth2client.service_account import ServiceAccountCredentials

这大概率是引发错误的核心原因。如果修正语法后仍然报错,那就是依赖包版本冲突的问题了——opentype相关的错误通常和pyasn1模块版本不兼容有关。你可以尝试卸载并重装相关依赖来解决:

pip uninstall -y gspread oauth2client pyasn1 pyasn1-modules
pip install gspread oauth2client

问题2:OAuth2授权后出现403 Insufficient Permission

你提到解决方案提到要修改scope变量,其实你的第二个代码里已经用到了scope,只是当前的scope权限范围不够!

目前你只传入了'https://spreadsheets.google.com/feeds',这个权限仅能访问公开表格,对于共享给你的私有表格,需要添加Drive的读写权限。修改Flow的初始化代码,把scope改成包含必要权限的数组:

# 先定义完整的权限范围
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
# 用这个scope初始化Flow
flow = oauth2client.client.OAuth2WebServerFlow(client_id, client_secret, scope)

另外还要注意两个关键细节:

  • 确保你在浏览器中授权的Google账号,确实拥有访问"mysheet"表格的权限(比如表格已共享给该账号,或者你是表格所有者)
  • 如果你之前已经生成过credentials.dat缓存文件,一定要先删除它,再重新运行代码完成授权——旧的缓存会保留之前的权限,新的scope不会生效

内容的提问来源于stack exchange,提问作者Alexis Eggermont

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:27:31