我正在尝试编写一种代理,以便能够使用 Google Chart API 查询 Google 电子表格,而无需将电子表格的权限直接授予访问可视化的人。
为了做到这一点,我想替换像
var query = new google.visualization.Query('http://spreadsheets.google.com/tq?key=THE_KEY');
query.send(handleQueryResponse);
通过调用我的 Apps 脚本代理(使用 JSONP)。
我将代理编写如下:(稍后我将添加一个选项以将结果封装在函数中 - JSONP)
function doGet(e) {
return ContentService
.createTextOutput(
UrlFetchApp
.fetch("http://spreadsheets.google.com/tq?tq="+e.parameter.q+"&key="+e.parameter.key))
.setMimeType(ContentService.MimeType.JSON);
}
尝试获得响应时,我收到此错误:google.visualization.Query.setResponse({"version":"0.6","status":"error","errors":[{"reason":"user_not_authenticated","message":"User not signed in","detailed_message":"\u003ca target=\u0022_blank\u0022 href=\u0022https://spreadsheets.google.com/spreadsheet/\u0022\u003eSign in\u003c/a\u003e"}]});
就像用户未通过身份验证一样。我认为这很奇怪,因为我的脚本被部署为一个 Web 应用程序,由我的用户执行,他拥有电子表格的权限。我想我们必须使用 some OAuth
,但我不知道如何以这种方式验证查询。
所以我的问题是:如何使用 Apps 脚本验证查询以访问具有我在部署为 Web 应用程序时定义的访问权限的数据?