在阅读 gspread 文档、gspread 博客文章并关注使用 gspread 的最新文档2 天后,我仍然无法打开甚至一个 Google 电子表格。我设置了一个 GDrive API 服务帐户。看来我的 OAuth2 凭据正在工作,但我仍然不断收到“SpreadsheetNotFound”错误。
我的代码看起来像这样,并且在尝试打开 Google 电子表格之前运行时没有错误消息:
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
jsonfile = '/path/Python-data-GSpreadsheets-dbbc-99.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(jsonfile,scope)
# get authorized to access data
gc = gspread.authorize(credentials)
# gc returns with no error messages, so far OK
wks = gc.open('SSTEst123').sheet1 #fails here
#throws SpreadsheetNotFound error
是的,我已将我的 gmail 电子邮件地址添加为授权编辑(无论是否尝试过),因为服务帐户无论如何都应该能够访问我的所有数据,并且我正在与自己重新共享我的电子表格。
我还能尝试什么来发现它失败的原因?关于如何调试为什么它无法打开任何电子表格的任何想法?
好的,这就是我解决它的方法。 不得不与 Google Drive API 服务帐户“电子邮件地址”(例如 my.test.data@python-xyz-gspreadsheets.iam.gserviceaccount.com)共享我的电子表格——(以为这是我的“真实”gmail ID/电子邮件,但事实并非如此)
为了调试提要... 在 gspread client.py 源代码中添加了一些 print() 行,以查看提要中是否有任何内容,并检查提要中的值。注意到我得到的值是旧值(来自以前的脚本?)
关闭并重新启动我的 iPython 笔记本,它现在可以工作了。