我在Apps脚本中编写了一个自定义函数,它使用函数参数构造查询,并调用提供查询的BigQuery服务(我使用API密钥启用)。但是当我在电子表格中使用该函数时,它总是返回服务器错误。
error: We're sorry, a server error occurred. Please wait a bit and try again.
这是我的代码(当我通过手动提供变量在调试器中运行它时它起作用):
function GetAge(first_name, last_name) {
var select_text = "SELECT first_name, last_name, age FROM Testing.FullNames WHERE ";
var filter_text = "first_name = '" + first_name + "' AND last_name= '" + last_name + "' ";
var group_text = "GROUP BY 1,2;";
var query_text = select_text + filter_text + group_text;
var query = {'query': query_text};
var response = BigQuery.Jobs.query('<My Project Id>', query);
var value = response.getRows()[0].getF()[2].getV();
return value;
}
答案 0 :(得分:1)
启用了v2 API?首次尝试运行时,是否提示您完成OAuth流程?
注意 - 一旦超过此初始错误,您将需要更改查询参数。查询调用只接受String作为第二个参数:
var response = BigQuery.Jobs.query('project_id', query_text);
答案 1 :(得分:1)
BigQuery服务v2beta1目前仅限于受信任测试人员的子集。如果您改为使用v2版本(它接受字符串查询),它应该可以工作。
答案 2 :(得分:0)
有一个关于如何从Google Apps脚本here调用BigQuery API的教程。