この質問のためにテストケースを蒸留しようとするまで、これがどのように機能するのか理解し始めていたと思っていました。GASを使用してスプレッドシートの時刻値を読み書きする
function dateToSeconds(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
return (hours*3600) + (minutes*60) + seconds;
}
をし、例えば実行することにより、細胞中でそれを呼び出す:Googleスプレッドシートで
あなたは次のようにカスタム関数を書くことができます=dateToSeconds(A1)
と期待しています。しかし、あなたがそれをそう呼んだ場合、
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange("A2").setValue(dateToSeconds(sheet.getRange("A1").getValue()));
}
25m 21sの矛盾があります。何が一体?
また、日付オブジェクトをスクリプトから戻して、時刻としてフォーマットされるようにするには、たとえば次のようにします。
function newTime(hours, minutes, seconds) {
// 1899-12-30 is the epoch for time values, it seems
// http://stackoverflow.com/questions/4051239/how-to-merge-date-and-time-as-a-datetime-in-google-apps-spreadsheet-script
return new Date(1899, 11, 30, hours, minutes, seconds, 0);
}
とやってそれを呼び出す:
=newTime(A1, A2, A3)
をし、それが正常に動作します。そうした場合:
:その後、1970年1月1日1時00分00秒
function test() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("A1:C3").getValues();
sheet.getRange("D3").setValue(newTime(values[0], values[1], values[2]));
}
それはのような日付としてフォーマットされ(11時00分〇〇秒の入力を与えられました)
これは伝統的な1970年代の1時間後の1時間と解釈されていますか? 25メートルの21Sは、上記オフセットと私は私が前に見ていた行動が少し対称的だと思ったと私は見たい:
が10時34分39秒
私のテストケースがhere