如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串
Posted
技术标签:
【中文标题】如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串【英文标题】:How to pass an array into a query string in Google App Script for a Google Spreadsheet 【发布时间】:2018-10-11 11:51:21 【问题描述】:我有一个脚本,它将以字符串变量(名为sql
)的形式进行查询,并将数据从 BigQuery 提取到 Google 电子表格。
如下所示:
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 at [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";
但是我的数组应该是动态的,所以手动硬编码它不是一个选项。那么如何将它作为变量传递呢?
【问题讨论】:
“它不起作用”不是有效的问题描述。为什么不显示从那个和其他尝试中查询字符串的样子,以及相关的代码 sn-ps? ***.com/help/how-to-ask 查看文档中的 Utilities.formatString。 @tehhowch 抱歉,当我说“它不起作用”时,这是因为 Google 电子表格给了我一个错误:“GoogleJsonResponseException: Unrecognized name: becca at [1:1088]”(“becca " 是我数组中的第一个值) @I'-'I: 刚试过,还是一样的错误信息:GoogleJsonResponseException: Unrecognized name: becca at [1:1088]
@I'-'I : 是的,现在可以了!
【参考方案1】:
您以字符串格式传递数组类型,这会产生问题。您需要将数组变量转换为这种数组格式的字符串格式。
var arrStr=arr.join("','");
"SELECT field1 FROM UNNEST(['"+arrStr+"']) AS field1"
【讨论】:
效果很好,谢谢!你是这里真正的 MVP!以上是关于如何将数组传递到 Google 电子表格的 Google App 脚本中的查询字符串的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以将数据从谷歌电子表格传递到 clickhouse?
如何将 Google 电子表格的工作表字符串 id 转换为整数索引 (GID)?
如何将 Google 电子表格的工作表字符串 id 转换为整数索引 (GID)?