2015-02-23 43 views
1

我正在Google數據表中執行自定義功能。我調用該函數是這樣的:將範圍發送到自定義功能

=foo(A1:A3)

該函數聲明爲:

function foo(input) { 
    return input.length 
} 

,並返回1.什麼是錯的?我需要做什麼才能返回input範圍的長度?

回答

2

the documentation

如果調用與參考一單元格範圍的作爲參數(像=DOUBLE(A1:B10))你的功能,參數將是該單元的值的二維陣列。例如,在下面的屏幕截圖中,=DOUBLE(A1:B2)中的參數被Apps腳本解釋爲double([[1,3],[2,4]])

Picture from Google Documentation

所以你看到1因爲只有一個在你的射程行。看看有多少細胞是該行中:

function foo(input) { 
    return input[0].length; 
} 

...這應該給你3,因爲傳遞給函數的數組應該是這樣的:

[valueOfA1, valueOfA2, valueOfA3] 

我不知道如果Google Spreadsheets中可能有空的範圍,但如果它們是的話,您可能需要添加一個警衛:

function foo(input) { 
    return input && input[0] && input[0].length; 
} 
+0

啊!!!非常感謝......這是一個狡猾的問題,但我閱讀了你展示的文件,並且沒有正確理解它。 – 2015-02-23 12:22:47

+0

@JuanPabloCabreraBorges:De nada! :-) – 2015-02-23 13:15:57