有没有办法构建一个使用BigQuery Service作为服务帐户而不是用户的Google Apps脚本应用程序?

时间:2014-07-23 21:22:16

标签: google-apps-script google-bigquery

我在这里尝试的是一个连接到bigquery,执行一些查询并在当前用户的Google云端硬盘中编写电子表格的应用程序。

我知道我可以将"执行应用更改为"部署应用程序时的选项。但当我这样做,并且用户尝试使用该应用时,Google会要求获得访问BigQuery的权限。

我不想授予每个用户访问BigQuery的权限。 我们有大约50~100个用户将使用(这个数字可以增加)

一些图片:

希望我已经清楚了。

3 个答案:

答案 0 :(得分:1)

你可能需要一个应用程序,让人们使用oAuth2

使用他们的Google帐户登录

Google Accounts Authentication and Authorization

我认为此链接概述了您的选择:

Permissions and Types of Scripts

我想你需要一个应用程序,在键盘上以用户身份运行,以便将电子表格保存到他们的Google云端硬盘中。如果您希望用户能够将文件下载到他们的计算机驱动器,那会有所不同。

只需使用HTML服务即可。它基本上只是建立一个网站。你没有域名。但您分发的电子表格没有域名。

HTML Service Google Documentation

从Apps脚本HTML服务,您可以写入电子表格,文档,并运行HTTP请求(urlFetch)。

URL Fetch Service

可以将Apps脚本应用程序中的权限设置为以您自己的方式运行Apps脚本文件,并且可以访问任何人,甚至是匿名。这样,永远不会要求用户对您拥有的任何文件进行许可。您需要对其进行一次授权,这是第一次运行需要访问您文件的脚本。

由于任何人都可以运行您的Apps脚本应用,您可能希望拥有一个登录系统来验证用户。

您需要使用Big Query API和Apps Script urlFetch来访问Big Query。

因此,使用HTML服务,您可以在常规网站上完成大部分HTML,CSS和Javascript操作。您可以创建自定义输入表单,具有不同的页面并在表格中显示数据。此外,它还通过HTTPS提供服务。

答案 1 :(得分:0)

如果您不希望所有用户启用BigQuery,您可以使用的一种解决方案是使用部署为服务的Web应用程序,并运行为"您"并且它将响应来自每个用户的urlFetch来自他们运行的脚本"他们自己"。 此服务将使用doGet主函数部署为任何其他Web应用程序,并使用contentService

返回其数据

答案 2 :(得分:0)

是的,这是可能的。在这里查看这个答案:Using Advanced Google Services with Service Account并查看这个很棒的库:https://github.com/googlesamples/apps-script-oauth2