2016-07-31 30 views
0

私は、シートの中に期間としてフォーマットされた数値フィールドをいくつか持っています(1日分として扱われます)。数式でそれらを使用すると、数値として正しく扱われます。Googleスプレッドシートスクリプト - 日付を数字として取得

また、それらの合計を計算するスクリプトでそれらを使用する必要があります。しかし、スクリプトでは、Dateオブジェクトとして登場します。代わりに数字を思いつくように強制する方法はありますか?そうでない場合は、日付を数字に正しく変換するにはどうすればよいですか? getUTCHours//getUTCSecondsを使用すると、ほとんどの場合動作しますが、時間は24時間に短縮され、精度は低下します(損失は小さいものの、ミリ秒を使用しても)。 Dateオブジェクトの年は1899年ですが、これは特に奇妙です。

は現在、私はこれに落ち着いたが、私はそれが(長い数がゼロのためgetTimeで)十分に信頼性があるかどうかわからないんだけど:

if (val instanceof Date) { 
    return (val.getTime() + 2209161600000)/24/3600/1000; 
    } 
+0

日付を入力したい最終形式と、後でそれらを使用する予定があることがわかっているとわかります。 –

答えて

0

は機能cell.getDisplayValue()を使用してみてください。それは'13のように、テキストに時間フォーマットされたセルを変換します:00' 、その後、あなたは

を使用し、プラス適切な数字にこれを変換するために署名することができる。 var cell = sheet.getRange(myRange); var strDisplay = cell.getDisplayValue(); var numVal = + strDisplay.substring(0, 2);

関連する問題