一年多来,我一直在网页上使用Google Sheets APIv4来显示公开共享的Google Spreadsheet中的数据。
即使我们没有任何改变,sheets API现在仍返回403(权限被拒绝)错误。我要访问的工作表是我拥有的工作表,并且共享设置确实正确。
此问题已于18年7月17日报告给我。
我正在使用Javascript访问公共表,并且由于不需要身份验证,因此仅指定了API密钥。
如果我尝试在“来宾”浏览器窗口中使用公共网址打开公共表格,则该表格可见,并且无需身份验证。
为什么API会突然拒绝阅读公开的表格?
这是我用来检索公开表的代码。
gapi.client.init({
'apiKey': 'AIzaSyC5fTcQun-1r83DVWlPmGAZpoUGPNcuM34',
'discoveryDocs': ['https://sheets.googleapis.com/$discovery/rest?version=v4']
}).then(function() {
return gapi.client.sheets.spreadsheets.values.get({
'spreadsheetId': '1e3KBd0277mz79IgxNch1-lwWdlJGiJQSe2eMNcXWYes',
'range': 'Sheet1!A:E'
});
}, errorMessage).then(function(response) { // Code to process the response });
在链接到读取公共电子表格的脚本的html文件的顶部,通过插入脚本标签加载gapi,该脚本标签的src标签=“ https://apis.google.com/js/api.js”
然后,我使用gapi.load('client',getData)捕获客户端库加载事件,其中getdata是包含上面引用的代码段的函数的名称。
以下是公开页面上的direct URL:
注意:上面代码中的API密钥仅限于我们的域。
如果我稍稍更改代码并使其需要授权,则通过将OAuth clientId和Scope添加到gapi.client.init()调用中,工作表API确实会成功检索电子表格,但这使对象失败公开表的内容。
Here is a snapshot of the sharing settings on the public sheet