Python) Google表格:更新API无法使用403

5
我正在按照官方链接学习教程:https://developers.google.com/sheets/quickstart/python
我已经执行了“quickstart.py”进行身份验证。 之后,我再次运行了“quickstart.py”,并像教程中那样看到了来自“https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit#gid=0”的数据。
我已将电子表格ID更改为我的ID,并通过以下方法使其从我的电子表格获取数据:service.spreadsheets().values().get().execute()
但是我的目标是向我的电子表格添加数据,所以我使用了下面的“update”方法:
rangeName = 'A2:D'
body['range'] = rangeName
body['majorDimension'] = 'ROWS'
body['values'] = ['test','test','test','test']
result = service.spreadsheets().values().update(
    spreadsheetId=spreadsheetId, range=rangeName, body=body).execute()
print('result:'+str(result))

然后我遇到了一个错误:

googleapiclient.errors.HttpError: https://sheets.googleapis.com/v4/spreadsheets/MY_SPREADSHEET_ID/values/A2%3AD?alt=json返回"请求的授权范围不足。">

我不知道为什么在尝试更新我的表格时会出现此错误,而在尝试从我的表格获取数据时不会出现此错误。(如果是由于身份验证引起的,则“get”方法也应该引起!)

谢谢。


请查看此链接 - Eugene
@Eugene 谢谢你的链接,但是当然,我已经找到了那篇文章,它不是关于 'gcloud' 而是使用 Python 的 'Google Spreadsheet API'。 - LKM
1个回答

6
快速入门示例将范围设置为:
https://www.googleapis.com/auth/spreadsheets.readonly

要更新电子表格,您需要将范围设置为:

https://www.googleapis.com/auth/spreadsheets

您可以通过首先删除位于~/.credentials(在树莓派上的位置)中的现有身份验证文件来完成此操作。它很可能被称为“sheets.googleapis.com-python-quickstart.json”。删除后,您需要重新进行身份验证,当您重新运行脚本时,这应该会自动发生。

1
和@LKM一样遇到了完全相同的问题,但是如果我删除.credentials中的json文件,并尝试执行相同的脚本,我会得到“NameError: global name 'CLIENT_SECRET_FILE' is not defined”。如果我像示例中那样定义常量: SCOPES ='https://www.googleapis.com/auth/spreadsheets' CLIENT_SECRET_FILE ='client_secret.json' APPLICATION_NAME ='Google Sheets API Python Quickstart' 我会得到“ValueError: No JSON object could be decoded”。 - jjon
1
对于像我一样毫无头绪的人:1. 进入您的Google账户API管理控制台并“重置密钥”2. 下载新的JSON文件3. 重新运行脚本,设置常量:SCOPES = 'googleapis.com/auth/spreadsheets'; CLIENT_SECRET_FILE = '您新下载的JSON文件' APPLICATION_NAME = 'Google Sheets API Python Quickstart'。然后,当您重新运行脚本时,流程函数将打开浏览器并要求登录。成功登录将在~/.credentials下生成一个新的“sheets.googleapis.com-python-quickstart.json”文件,然后您就可以开始使用了。感谢@Duppie。你指引了我正确的方向。 - jjon
我有一个类似的解决方案,只不过我之前有一个“token.pickle”文件,我将其删除了。 - rlshep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接