授权Google Charts访问私人电子表格

时间:2018-01-08 03:01:17

标签: google-apps-script google-sheets google-visualization google-spreadsheet-api

我正在尝试使用Google Apps脚本创建一个Web应用程序,使用Google Charts从我的Google表格中查询数据。

我可以在公开分享Google表格时成功查询电子表格,但由于电子表格包含机密信息,我宁愿私下使用authorizations进行查询。

我想使用Google Charts可视化功能(而不是服务器端电子表格应用程序)的原因是因为查询大型数据集的速度很快。

我已尝试按照上述文档中的步骤操作。也就是说,创建一个客户端ID,然后使用gapi.auth库对自己进行身份验证,但我仍然收到错误。

当我从文档中添加授权库和代码的第一部分时(使用console.log只是为了看看它到底在哪里):

<script src="https://apis.google.com/js/auth.js?onload=init"></script>

<script> 
var clientId = '1234.apps.googleusercontent.com'; 
var scopes = 'https://spreadsheets.google.com/feeds';       

function init() { 

console.log("here");  

gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true},handleAuthResult);

}

</script>

我收到以下错误:

  

1289869776-mae_html_user_bin_i18n_mae_html_user.js:41 drop   postMessage ..来自意外的窗口

感谢任何指导。

2 个答案:

答案 0 :(得分:3)

由于您使用Google Apps脚本创建了自己的网络应用,因此您无需“授权Google图表访问私人图表​​”,因为您可以使用Google Apps脚本服务和方法从电子表格中获取数据并将其传递给Google图表。

Converting from UiApp + Chart Service to Html Service + Google Visualization API上,它显示了如何将旧仪表板示例从UiApp + Chart Service转换为HtmlService + Google Visualization API。这说明了如何创建一个Google Apps脚本网络应用程序,该应用程序可以使用Google电子表格数据构建图表而无需“需要授权”,因为Google Apps脚本会“隐式”处理该图表。

从上面的链接

  

两个功能合作检索仪表板的数据并显示它。加载可视化API后,将立即调用sendQuery()函数。 使用google.script.run工具,它将其请求发送到服务器端getSpreadsheetData()函数。这是一个异步操作,因此提供了两个回调,一个successHandler和一个failureHandler。一个或另一个将收到服务器调用的结果,具体取决于结果。

H / T到jfllmartin,共享上述链接的answerConverting my google dashboard app from the UI service to the HTML service的作者。

相关

答案 1 :(得分:1)

我可以建议您从使用Google表单更改为使用Firebase与Google表格或仅使用Firebase,然后使用后端的Google appscript。

我经常使用Google脚本来解决使用Google表格中的数据更新Firebase的问题。然后,我享受Firebase的速度和安全性,以提供超快的用户体验。

在appscript中有两个转到使用Firebase的页面。示例pagequick start

此外,我放弃使用谷歌自己的图表库并开始使用高级图表或chartJS,因为它们更容易访问。