0

我可以通过Google Spreadsheet将数组传递给Google App脚本方法吗?我可以通过Google Spreadsheet将数组传递给Google App脚本方法吗?

假设我有一个应用脚本函数,它需要一个包含两个元素的列表(注意:这个例子只是一个例子,所以请不要告诉我,如果我简单地将每个元素作为单独的参数传递,我的问题就会被解决) 。如何从Google Spreadsheet单元格调用此函数?我试过两种:'= myFunc([1,2])'和'= myFunc((1,2))',并且都给我一个解析错误。

+0

矢量值在工作表的单元格中?你可以通过一个范围,'= myFunc(A1:A2)'? – wchiquito

+0

它们不一定是工作表单元格中的值。即使他们是,你的建议要求价值观是在一个连续的范围内,这是我想避免的。 –

回答

7

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

现在,当这样的嵌入式数组传递给Google Apps脚本时,它们将转换为二维JavaScript数组,就像引用的范围一样。

所以:

=myFunc({1,2})

=myFunc({1;2})

function myFunc(value) 
{ 
} 

在第一个公式,value[[1, 2]]。第二,它将是[[1], [2]]

+0

非常好的选择。使用文本将是:'= myFunc({“test,comma”,1,“another test; with”“quote”“”})' – wchiquito

+0

仔细查看那些您有单个值的情况,例如:'= myFunc ({1})',目前这种行为并不像预期的那样,寻找解决方案。 – wchiquito

+0

传递单个值'= myFunc({1})',收到的参数不是数组,而是数值本身。 – wchiquito

1

一种选择是通过文本的字符串,然后将其转变为功能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]") 
+0

这很有用,但如果我想传入的值包含逗号,该怎么办?有没有办法引用它们,以便它们不会被解析为分割标记? –

+0

您可以使用任何其他分隔符,尝试永远不会在正常文本中使用的分隔符|我喜欢这个| –

+0

eval()的选择可以处理这种情况,但是,您必须解决使用eval()的风险。 '= myFunc(“['test,comma',1,'other,test']”)' – wchiquito

相关问题