0

我正在尝试编写一种代理,以便能够使用 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 应用程序时定义的访问权限的数据?

4

1 回答 1

1

请参阅 urlfetch 文档。你错过了所有的 oauth 东西。你这样做的方式只适用于公共 ss。

于 2013-05-06T16:53:02.813 回答