我正在尝试使用 gspread 访问谷歌电子表格,并且我已经成功地做到了这一点,但是,每次运行代码时我都必须重新授权。
我已正确设置凭据
如下所示,我指定了授权用户文件的位置,当我第一次运行代码时,它会创建授权用户文件,并且代码运行时会得到预期的结果。
但是,当再次运行代码时,oath方法似乎没有读取该文件,我必须再次授权。再次授权后,代码将按预期运行。
import gspread
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
SPREADSHEET_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
CRED_FILE = "client_secret.json"
AUTH_USER_FILE = 'auth_user.json'
gc = gspread.oauth(credentials_filename=CRED_FILE, scopes=SCOPES, authorized_user_filename=AUTH_USER_FILE)
# Open a sheet from a spreadsheet in one go
spreadsheet = gc.open_by_key(SPREADSHEET_ID)
ws = spreadsheet.get_worksheet(0)
# Update a range of cells using the top left corner address
ws.update([[1, 2], [3, 4]], 'A1')
我错过了什么吗?为什么每次运行都需要授权?我假设工作授权直至其过期。
值得注意的是,我已经使用了 google api 客户端一些,并且在使用它时,一旦授权,我就不必再次授权。 google api 客户端有点超出我的能力,所以我想改用 gspread。
这里的问题是 gspread 6.0.0 中的一个错误。
降级到 gspread 5.12.4 可以解决该问题,并且该错误修复计划在 gspread 6.0.1 中发布。
错误追踪器在这里: github.com/burnash/gspread/issues/1390