如何在Google电子表格的Google App脚本中将数组传递到查询字符串中

时间:2018-10-11 11:51:21

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

我有一个脚本,它将以字符串变量(名为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";

但是我的数组应该是动态的,因此手动进行硬编码不是一个选择。那么如何将其作为变量传递?

1 个答案:

答案 0 :(得分:1)

您正在以字符串格式传递数组类型,这会产生问题。您需要以这种数组格式的字符串格式转换数组变量。

var arrStr=arr.join("','");
"SELECT field1 FROM UNNEST(['"+arrStr+"']) AS field1"