我有一个脚本,它将以字符串变量(名为sql
)的形式进行查询,并将数据从BigQuery提取到Google Spreadsheet。
如下所示:
var sql = "SELECT field1, field2 FROM table";
var queryResults;
try {
var queryRequest = BigQuery.newQueryRequest();
queryRequest.setQuery(sql).setTimeoutMs(100000).setUseLegacySql(false);
queryResults = BigQuery.Jobs.query(queryRequest, projectNumber);
}
现在,我想创建一个数组变量并将其传递给sql
查询字符串。当我将数组作为如下变量传递时,它不起作用:Google SpreadSheet给了我一个错误:
GoogleJsonResponseException:无法识别的名称:becca位于[1:1088]
(“ becca”是我数组的第一个值)
var array = ['a','b','c']
var sql = "SELECT field1 FROM UNNEST("+array+") AS field1";
仅当我手动对字符串数组进行硬编码时,它才起作用,如下所示:
var sql = "SELECT field1 FROM UNNEST(['a','b','c']) AS field1";
但是我的数组应该是动态的,因此手动进行硬编码不是一个选择。那么如何将其作为变量传递?
答案 0 :(得分:1)
您正在以字符串格式传递数组类型,这会产生问题。您需要以这种数组格式的字符串格式转换数组变量。
var arrStr=arr.join("','");
"SELECT field1 FROM UNNEST(['"+arrStr+"']) AS field1"