对BigQuery的Google电子表格脚本授权

时间:2015-06-10 09:43:40

标签: google-apps-script google-sheets google-bigquery

我有一个Google电子表格,其中包含一个连接到BigQuery的脚本(使用本教程 - https://developers.google.com/apps-script/advanced/bigquery?hl=ar-AE)。 它添加了一个额外的菜单选项,用户可以运行执行查询到BigQuery的脚本。

它适用于我,我想与其他用户(无权访问BigQuery本身)共享此电子表格,并允许他们运行我的脚本。当我这样做时,首先他们获得脚本授权对话框,然后能够运行脚本。但BigQuery返回错误:

Exception: Access Denied: Job XXX:job_NaMBWMRfbMHygS1n10AQXXXX: The user does not have permission to run a query in project XXXXX

我尝试将脚本部署为网络应用并将其设置为在我的帐户下执行,但它没有改变任何内容。

有任何解决方案或解决方法吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,您只能允许访问以'您自己运行的脚本。如果它作为Web应用程序运行。将其作为webapp运行的唯一方法是浏览器调用doGet()/ doPost()函数。将doGet()作为函数运行将其作为普通脚本运行。

您可以使用开发人员控制台中的项目访问控制来授予对运行查询的访问权限。退房:
https://cloud.google.com/bigquery/access-control

另一个选项是使用Oauth2库并将您的个人令牌存储在脚本属性中。然后,您可以重写脚本以使用BigQuery REST接口。这里有一个模板: https://github.com/googlesamples/apps-script-templates/tree/master/sheets-import

答案 1 :(得分:0)

我发现最好的方法是简单地更改文件appsscript.json的配置。您可以通过访问查看>显示项目清单来找到。在那里,您会找到一个更改选项executeAs的选项,如果更改为USER_DEPLOYING,则Web应用程序将始终以部署人员的身份运行,并且很可能可以访问BigQuery项目。您可以在这里找到文档的来源:https://developers.google.com/apps-script/manifest