ビジュアライゼーションにアクセスする人々にスプレッドシートに直接権限を与えることなく、Google Chart API を使用して Google スプレッドシートをクエリできるように、一種のプロキシを作成しようとしています。
そのために、次のような呼び出しを置き換えたい
var query = new google.visualization.Query('http://spreadsheets.google.com/tq?key=THE_KEY');
query.send(handleQueryResponse);
私の Apps Script プロキシ (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 アプリとして展開されているため、奇妙だと思います。一部を使用する必要があるOAuth
と思いますが、その方法でクエリを認証する方法がわかりません。
私の質問は次のとおりです: Apps Script を使用してクエリを認証し、Web アプリとしてデプロイするときに定義したアクセス権でデータにアクセスする方法は?