2

我可以将数组从 Google 电子表格传递到 Google App 脚本方法吗?

假设我有一个 App Script 函数,它需要一个包含两个元素的列表(注意:这个例子只是一个例子,所以请不要告诉我,如果我只是将每个元素作为单独的参数传递,我的问题就会得到解决)。如何从 Google 电子表格单元格调用此函数?

我都试过了:'=myFunc([1,2])' 和 '=myFunc((1,2))' 都给了我一个解析错误。

4

3 回答 3

8

在电子表格公式中,您可以使用花括号构造一个嵌入式数组。分号是行分隔符;逗号(或在使用逗号作为小数点分隔符的语言环境中的反斜杠)是列分隔符。

现在,当此类嵌入数组传递给 Google Apps 脚本时,它们会被转换为二维 Javascript 数组,就像引用范围一样。

所以:

=myFunc({1,2})

=myFunc({1;2})

function myFunc(value)
{
}

在第一个公式中,value将是[[1, 2]]。在第二种情况下,它将是[[1], [2]]

于 2013-08-19T11:13:35.303 回答
3

一种选择是传递一串文本,然后将其转换为函数 myFunc 内的数组:

function myFunc(value) {
  var arr = value.split(',');
}

=myFunc("1,2")

或者

function myFunc(value) {
  /* remember you have to be careful with this function: eval() */
  var arr = eval(value);
}

=myFunc("[1,2]")
于 2013-08-19T07:10:23.047 回答
1

您可以将选定范围的单元格传递到您的 Javascript 函数中,如下所示:

在此处输入图像描述

将调用 Javascript 函数,并将值传递给单个参数,如下所示:

[[""],[""],["E3"],[""],["E1"],[""],[""],[""]]

map可以使用简单的filter链接来规范化这个数组数组:

function calculateSalaryMultiple(values) {

  // values == [[""],[""],["E3"],[""],["E1"],[""],[""],[""]]
  values = values.map(x=>x[0]).filter(x=>x);

  // values == ["E3", "E1"]
  // Rest of your logic
  ...
于 2021-06-07T11:35:33.387 回答