简体   繁体   English

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

[英]How to pass an array into a query string in Google App Script for a Google Spreadsheet

I have a script that will take a query in the form of a string variable (named sql ) and pull data from BigQuery to a Google Spreadsheet. 我有一个脚本,它将以字符串变量(名为sql )的形式进行查询,并将数据从BigQuery提取到Google Spreadsheet。 Something like below: 如下所示:

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);
}

Now, I want to create an array variable and pass it to the sql query string. 现在,我想创建一个数组变量并将其传递给sql查询字符串。 When I pass the array as a variable like below, it didn't work: Google SpreadSheet gave me an error: 当我将数组作为如下变量传递时,它不起作用:Google SpreadSheet给了我一个错误:

GoogleJsonResponseException: Unrecognized name: becca at [1:1088] GoogleJsonResponseException:无法识别的名称:becca at [1:1088]
("becca" is the first value of my array) (“ becca”是我的数组的第一个值)

var array = ['a','b','c']
var sql = "SELECT field1 FROM UNNEST("+array+") AS field1";

It only worked when I manually hard code the array of strings, like below: 仅当我手动对字符串数组进行硬编码时,它才起作用,如下所示:

var sql = "SELECT field1 FROM UNNEST(['a','b','c']) AS field1";

However my array is supposed to be dynamic so manually hard coding it is not an option. 但是我的数组应该是动态的,因此手动硬编码不是一个选择。 How do I pass it as a variable then? 那我如何将其作为变量传递呢?

you are passing the array type in the string format which will create a problem. 您将以字符串格式传递数组类型,这将产生问题。 you need to convert the array variables in such array formatted string format. 您需要以这种数组格式的字符串格式转换数组变量。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM