我正在嘗試編寫一種代理服務器,以便能夠使用Google Chart API查詢Google Spreadsheet,而不必直接向電子表格授予訪問可視化對象的權限。如何從Google App腳本中的UrlFetch服務調用Google Charts API?
爲了做到這一點,我想通過我的Google Apps腳本代理(與JSONP)的調用來代替像
var query = new google.visualization.Query('http://spreadsheets.google.com/tq?key=THE_KEY');
query.send(handleQueryResponse);
呼叫。
我寫的代理如下: (我後來添加的選項封裝結果在一個函數 - 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腳本來驗證查詢以使用我在部署爲Web應用程序時定義的訪問權限訪問數據?