Google apps script 应用程序脚本中的自定义函数中的BigQuery调用失败

Google apps script 应用程序脚本中的自定义函数中的BigQuery调用失败,google-apps-script,google-bigquery,Google Apps Script,Google Bigquery,我在Apps脚本中编写了一个自定义函数,该函数使用函数参数构造查询,并调用提供查询的BigQuery服务(我使用API键启用了该服务)。但当我在电子表格中使用该函数时,它总是返回服务器错误 error: We're sorry, a server error occurred. Please wait a bit and try again. 以下是我的代码(当我通过手动提供变量在调试器中运行它时,它会工作): 函数GetAge(名字、姓氏){ var select_text=“选择名字、姓氏

我在Apps脚本中编写了一个自定义函数,该函数使用函数参数构造查询,并调用提供查询的BigQuery服务(我使用API键启用了该服务)。但当我在电子表格中使用该函数时,它总是返回服务器错误

error: We're sorry, a server error occurred. Please wait a bit and try again.
以下是我的代码(当我通过手动提供变量在调试器中运行它时,它会工作):

函数GetAge(名字、姓氏){
var select_text=“选择名字、姓氏、测试年龄。全名WHERE”;
var filter_text=“first_name=”+“first_name+””和last_name=”“+last_name+””;
var group_text=“按1,2;分组”;
var query_text=选择_text+过滤_text+分组_text;
var query={'query':query_text};
var response=BigQuery.Jobs.query(“”,query);
var value=response.getRows()[0].getF()[2].getV();
返回值;
}

是否已启用v2 API?当第一次尝试运行时,是否提示您完成OAuth流

注意-一旦您克服了这个初始错误,您将需要更改查询参数。查询调用仅将字符串作为第二个参数:

var response = BigQuery.Jobs.query('project_id', query_text);

目前,BigQuery服务v2beta1仅限于受信任测试人员的子集。如果您改用v2版本(需要字符串查询),它应该可以工作。

有一个关于如何从Google Apps脚本调用BigQuery API的教程。

我认为v2 API已经启用,但在线文档仍然是v1。我尝试了您的语法,但v2的BigQuery.Jobs.query似乎将第二个参数设置为Javascript对象,而不是字符串。突出的问题仍然是,在尝试调用电子表格中的函数时,我经常遇到服务器错误。v2 BigQuery.Jobs.query方法肯定有两个必需的参数:项目ID和查询文本。第三个参数是一个可选的JS对象,包含您希望传递的任何其他参数。我建议检查您为脚本选择的API版本!嗨,jcondit,我尝试使用v2api,但仍然没有成功。我怀疑从自定义函数调用时与授权有关。我不知道为什么这个问题会持续。嘿,Jarod,我只是想让你知道我相信这是一个bug。一只比我想象的要老得多的虫子。我担心,如果已经快一年了,它可能永远也无法修复。嗨,Eric,我将API版本改为v2,并直接传递了查询文本,但仍然不起作用。我也尝试将带有API键的对象传递给函数,但没有成功。我怀疑问题是由于授权问题。直接从自定义函数调用时,似乎不会触发授权。从读取BigQuery文档来看,query()操作需要授权,自定义函数不能使用任何需要授权的服务。这通常使用更好的错误消息来显示。如果您从菜单项或触发器运行查询,那么它应该可以正常工作。谢谢,Eric。这也是我所怀疑的。我将尝试与BigQuery团队确认。
var response = BigQuery.Jobs.query('project_id', query_text);