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

相關問題