Задача
Если вы разобьетесь, что происходит, вы увидите, что a-b
в вашем случае пытается выполнить математическую операцию над двумя экземплярами класса Range
, таким образом, возвращает NaN
. Затем NaN
делится на 24*60*60*1000
, что также NaN
и, наконец, Math.floor()
, вызванный на NaN
, также возвращает NaN
:)
Решение
Вам необходимо явно извлечь значения из Range
, чтобы иметь возможность работать с ними. Класс SpreadsheetApp
имеет два удобных метода для этого: getValue()
, который извлечет значение верхней левой ячейки Range
, и getValues()
, который извлечет все значения в два Array
структурированный так:
[ //pseudo-code;
row1: [ col1, colN ],
rowN: [ col1, colN ]
]
Sample
С небольшой модификацией ваш код должен выглядеть так:
function daysInRange() {
var a = new Date( shtCalc.getRange(2, 3).getValue() );
var b = new Date( shtCalc.getRange(2, 6).getValue() );
var days = Math.floor((a-b)/(24*3600*1000));
Logger.log(days);
}
Полезные ссылки
getValue()
метод ссылка ;
getValues()
метод ссылка ;