从工作表中的 Google Apps 脚本访问 BigQuery 时需要登录错误
Posted
技术标签:
【中文标题】从工作表中的 Google Apps 脚本访问 BigQuery 时需要登录错误【英文标题】:Login Required error accessing BigQuery from Google Apps Script in a Sheet 【发布时间】:2018-04-03 11:09:42 【问题描述】:我从此处的文档中创建了一个非常简单的 Google Apps 脚本:
https://developers.google.com/apps-script/advanced/bigquery
我修改了该脚本以使用我自己的项目 ID 并在该项目的 BigQuery 中查询一个表。从脚本编辑器运行脚本时它工作正常 - 但是当我尝试从我的工作表中调用它时,它首先说“正在加载”,然后过了一会儿说“错误:需要登录”。我从未被要求对任何事情进行身份验证或给予许可。我尝试将脚本打包为我的组织的表格插件,当我添加插件时,它确实要求许可,但我再次尝试运行查询,我得到登录所需的错误。从 BigQuery 控制台我可以看到确实没有执行任何查询,从 Stackdriver Logging 控制台我可以看到登录所需的错误。
insertId: "1qpzv6cfv6fswq"
jsonPayload:
context:
reportLocation:
filePath: "Code"
functionName: "runQuery"
lineNumber: 86
message: "Login Required
at runQuery(Code:86)"
serviceContext:
service: "blah"
labels:
script.googleapis.com/process_id: "blah"
script.googleapis.com/project_key: "blah"
script.googleapis.com/user_key: "blah"
logName: "projects/sk-data-platform/logs/script.googleapis.com%2Fconsole_logs"
receiveTimestamp: "2018-03-31T20:20:53.173034608Z"
resource:
labels:
function_name: "runQuery"
invocation_type: "custom function"
project_id: "sk-data-platform"
type: "app_script_function"
severity: "ERROR"
timestamp: "2018-03-31T20:20:52.169Z"
我看到的所有文档都表明 Google 表格应该为我处理身份验证流程,并且脚本应该在登录用户的上下文中运行。
在这种情况下,我的用户是 Google 项目的所有者,因此我可以访问所有内容。在这一点上非常困惑。
【问题讨论】:
我一直看到类似的问题,尽管即使我从 gs 脚本编辑器运行时也会出现登录错误。 ***.com/questions/49478149/… 【参考方案1】:好的,所以我遇到的问题是我试图将该函数作为表格自定义函数执行。我不知道的是自定义函数不能与许多谷歌服务(其中包括 BigQuery)通信。该错误非常无益。如果我将函数绑定到菜单,然后单击菜单项,它将正确执行。
不幸的是,这不允许我构建一个工作表,用户可以在其中使用自定义查询填充任意范围的单元格 - 这正是我所寻找的。p>
【讨论】:
制作一个允许输入范围和查询的侧边栏。 是的,我得出的结论是,这是必需的。比我预期的要多得多的工作。现在我有一个 hacky 解决方案,使用自定义函数将 sql 存储为属性,另一个将结果检索到目标和相邻单元格中。以上是关于从工作表中的 Google Apps 脚本访问 BigQuery 时需要登录错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Google Apps 脚本将 Null 值从表格插入 Mysql 数据库
用于将 google drive 中的文件名列表与 google sheet 列中的名称列表进行比较的 Apps 脚本,以将新文件从驱动器添加到工作表
如何通过 Google 表格中的二维数组通过 Apps 脚本插入 Big Query?
通常如何从 Google Apps 脚本访问 BigQuery