我可以使用 javascript fetch() 读取谷歌表格单个值,没有问题。但是,当尝试读取多个范围时,会出现错误 403。
这段代码运行良好:
const apiKey = 'key-here';
const spreadsheetId = 'sheet-id-here';
const sheetName = 'Sheet1';
values = values = fetch(`https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${sheetName}?key=${apiKey}`)
.then(response => response.json())
.then (data => console.dir (data))
.catch(error => console.error('Google Sheet Reading Error: ', error));
但是当用values.getBatch替换fetch()时,浏览器的检查面板显示错误403:
values = fetch(`https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values:batchGet?ranges=Sheet1!A1:A2&ranges=subtitle!B1:B2?key=${apiKey}`)
错误是:
code: 403
message: "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API."
status: "PERMISSION_DENIED"
有关值的文档:getBatch 位于 https://developers.google.com/sheets/api/samples/reading
在你的脚本中,我认为
?
的?key=${apiKey}
应该是&
。我认为这就是您当前问题PERMISSION_DENIE
的原因。
另外,请按如下方式进行URL编码。
https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values:batchGet?ranges=Sheet1!A1%3AA2&ranges=subtitle!A1%3AA2&key=${apiKey}
当这些点反映在你的脚本中时,就会变成如下所示。
values = fetch(`https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values:batchGet?ranges=Sheet1!A1%3AA2&ranges=subtitle!A1%3AA2&key=${apiKey}`)