2015-02-23 2 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 возможны пустые диапазоны, но если они есть, вы можете добавить защитника:

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

А-А !!! Большое спасибо ... Это был спорный вопрос, но я прочитал документ, который вы показываете, и не понимал его должным образом. –

+0

@JuanPabloCabreraBorges: ¡Де-нада! :-) –

Смежные вопросы