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(),我可以获取工作表以显示日期或自 1900 年 1 月 1 日以来的天数或其他任何内容。那时,我可以在一个单元格中添加它。我可以在一个单元格中添加 getLatestTime() 和 daysLeft() 并且它工作正常。我还可以在单元格中添加时区偏移量并且它可以工作。但是,当我在此功能中执行此操作时,似乎没有任何效果。我尝试将 .value 添加到函数调用并使用 parseFloat() 但这给了我 NaN。
如何对这些函数返回进行算术运算?