function getFirstEmptyRow() {
var spr = SpreadsheetApp.getActiveSpreadsheet();
var column = spr.getRange('A:A');
var values = column.getValues(); // get all data in one call
var ct = 0;
while (values[ct][0] != "") {
ct++;
}
return (ct);
}
function getLatestTime() {
return SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange(getFirstEmptyRow(),1).getValue();
}
function getLatestPoints() {
return SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange(getFirstEmptyRow(),2).getValue();
}
function getLatestAverage() {
return SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRange(getFirstEmptyRow(),3).getValue();
}
function daysLeft(){
var pointsLeft = 24250 - getLatestPoints();
return (pointsLeft/getLatestAverage())/24;
}
function nextRedeem() { //Problem is with this function:
var redeemTime = getLatestTime() + daysLeft() + (2/24);
return redeemTime;
}
В моем листе у меня есть список строк с 1) датой/временем 2) значением точки и 3) средним значением очков в час. Я пытаюсь написать функцию, которая вычисляет, сколько времени осталось до того, как точки достигнут определенного числа, и добавьте их в самое последнее время, чтобы выяснить, в какое время я ожидаю, что это количество очков.Пытается добавить к дате Время в листах
У меня мало опыта с java-скриптом и слабым набором текста. Моя проблема в том, что когда я пытаюсь добавить число к моему возвращенному значению даты, я либо получаю строку, либо просто NaN. Моя другая проблема заключается в том, что листы, кажется, интерпретируют даты в несколько раз, чем Number().
Если функция nextRedeem() просто возвращает getLatestTime(), я могу получить листы, чтобы показать ее либо как дату, либо число дней с 01.01.1900 или что бы то ни было. В этот момент, в ячейку я могу добавить к ней. Я могу добавить getLatestTime() и daysLeft() в ячейку, и он отлично работает. Я также могу добавить смещение часового пояса, и он работает, в ячейке. Но когда я делаю это в этой функции, ничего не работает. Я попытался добавить .value к вызовам функций и использовать parseFloat(), но это дает мне NaN.
Как сделать арифметику с помощью этих функций?
Это вызывает больше проблем на самом деле, мне нужно быть фактической датой/временем, а не только днем месяца. Другая проблема заключается в том, что листы Google и javascript обрабатывают даты по-разному. 2/24 означает 2/24ths 1 дня или 2 часа, поскольку google обрабатывает время datetime как часть дня. В принципе, поскольку datetime в google - это просто количество дней с 1900 года, я просто хочу добавить к этому номеру, тогда листы интерпретируют это как дату снова. Но код хочет интерпретировать его как строку, а не число. – Stoopkid