[英]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.