使用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
相关产品推荐
相关产品推荐

