一年多以来,我一直在网页上使用 Google Sheets APIv4 来显示公开共享的 Google 电子表格中的数据。
尽管我们这边没有任何改变,但 Sheets API 现在返回 403,权限被拒绝错误。我尝试访问的工作表是我拥有的工作表,并且共享设置似乎是正确的。
这个问题是在 2018 年 7 月 17 日向我报告的。
我正在使用 Javascript 访问公共表,并且由于不需要身份验证,因此仅指定 API 密钥。
如果我尝试在“访客”浏览器窗口中使用公共 URL 打开公共工作表,则该工作表可见并且不请求任何身份验证。
为什么 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 文件顶部,通过插入 src tag = " 的脚本标签来加载gapihttps://apis.google.com/js/api.js"
然后我使用gapi.load('client', getData) 捕获客户端库加载事件,其中getdata 是包含上面引用的代码片段的函数的名称。
这里是直接网址到公开表:
NOTE:上面代码中的 API 密钥仅限于我们的域。
如果我稍微更改代码并使其需要授权,通过将 OAuth clientId 和 Scope 添加到gapi.client.init() 调用,sheets API 确实成功检索电子表格,但这破坏了制作公开表。
这是公共表上共享设置的快照