编辑:解决了,问题在谷歌这边。在请求具有无效间隔的图表的工作表时发生。向Google报告错误。
注意:此问题已持续超过2天。我以前也有,但等了一天就自动解决了。它后来又复活了。
我目前使用谷歌表API通过谷歌的python API客户端。身份验证是OAuth2.0,我没有在我的代码库中改变任何重要的东西,但突然我得到了100%的错误率,似乎应该是在谷歌的末端。我担心我被无限期禁止使用API,是这样吗?我的猜测是,当我启动脚本并立即用ctrl+c取消它时,因为我想运行它的新版本,导致了一些问题。
我尝试创建另一个项目并使用其凭据来发出请求,并得到相同的错误。试着让我的朋友通过他的谷歌账户运行脚本身份验证,他收到同样的错误。独立的源代码可以在这里找到
关于源代码:get_credentials()(以及认证)完全复制自Google的python快速入门脚本https://developers.google.com/sheets/quickstart/python。
回溯:
Traceback (most recent call last):
File "Google_sheets.py", line 164, in <module>
ss=Spreadsheet(SPREADSHEET_ID)
File "Google_sheets.py", line 83, in __init__
spreadsheetId=self.ssId, includeGridData=True).execute()['sheets']}
File "C:UsersLarssonAppDataLocalProgramsPythonPython35-32libsite-packagesoauth2clientutil.py", line 137, in positional_wrapper
return wrapped(*args, **kwargs)
File "C:UsersLarssonAppDataLocalProgramsPythonPython35-32libsite-packagesgoogleapiclienthttp.py", line 838, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 500 when requesting https://sheets.googleapis.com/v4/spreadsheets/12YdppOoZUNZxhXvcY_cRgfXEfRnR_izlBsF8Sin3rw4?alt=json&includeGridData=true returned "Internal error encountered.">
重试后不久,我得到另一个错误:
Traceback (most recent call last):
File "Google_sheets.py", line 164, in <module>
ss=Spreadsheet(SPREADSHEET_ID)
File "Google_sheets.py", line 83, in __init__
spreadsheetId=self.ssId, includeGridData=True).execute()['sheets']}
File "C:UsersLarssonAppDataLocalProgramsPythonPython35-32libsite-packagesoauth2clientutil.py", line 137, in positional_wrapper
return wrapped(*args, **kwargs)
File "C:UsersLarssonAppDataLocalProgramsPythonPython35-32libsite-packagesgoogleapiclienthttp.py", line 838, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://sheets.googleapis.com/v4/spreadsheets/12YdppOoZUNZxhXvcY_cRgfXEfRnR_izlBsF8Sin3rw4?includeGridData=true&alt=json returned "The service is currently unavailable.">
问题解决了,问题在谷歌这边。当请求工作表,其中的图表中有无效/未选择的间隔时发生。向Google报告错误。
我也得到了这个错误,经过一些摆弄,我发现这是我的下拉框上的数据验证。重新编辑您的验证,选择相同的单元格并重新保存,冲洗并重复所有这些字段,它应该工作。
PS:考虑到这似乎会影响其他类型的数据,我建议删除文档的部分内容,直到它开始在脚本端工作,这样您的最后一个操作将表明哪些单元格有问题。
500和503是Google服务器问题。您将需要实现指数回退,以便您可以再次重试事务。查看此链接- https://developers.google.com/admin-sdk/directory/v1/limits
并且,所有api都有使用限制。查看此链接- https://developers.google.com/gmail/api/v1/reference/quota
我也遇到过同样的问题。受上面答案的启发,问题的起源确实在Gsheet本身。禁用工作表上的过滤器解决了这个问题。
如标准错误响应中所述,错误码#500和#503是与服务器相关的错误。对此,建议的处理方法是不要多次重试查询。
处理这些错误代码:
如果大量的请求或繁重的网络流量导致服务器返回错误,那么指数回退可能是处理这些错误的好策略。在负载过重或更大更复杂的请求时可能会导致500或503错误。对于较大的请求,请考虑在较短的时间内请求数据。另外考虑实现指数回退。
除此之外,您还应该检查您的应用程序是否超出了使用限制。如果是这样,则可能应该优化应用程序代码以减少请求。如果需要,您可以选择在项目的配额选项卡下的Google API控制台请求额外的配额。