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) 1 時間あたりのポイントの移動平均の行のリストがあります。ポイントが特定の数に達するまでの残り時間を計算し、それを最新の時間に追加して、その数のポイントが予想される時間を計算する関数を作成しようとしています。
私はJavaスクリプトと弱いタイピングの経験がほとんどありません。私の問題は、返された日付値に数値を追加しようとすると、文字列または単に NaN を取得することです。私の他の問題は、シートが Number() とは異なる方法で日付を数値に解釈するように見えることです。
私の nextRedeem() 関数が単純に getLatestTime() を返す場合、日付または 1900 年 1 月 1 日からの日数またはそれが何であれ、それを表示するシートを取得できます。その時点で、セルに追加できます。セルに getLatestTime() と daysLeft() を追加すると、正常に機能します。タイムゾーンのオフセットを追加することもでき、それはセルで機能します。しかし、この関数でそれを行うと、何も機能しないようです。関数呼び出しに .value を追加して parseFloat() を使用しようとしましたが、NaN になります。
これらの関数の戻り値で算術演算を行うにはどうすればよいですか?