google apps scriptはjavascriptの拡張。
google スプレッドシートはMS EXCEL準拠らしい。
日付シリアルをgoogleスプレッドシートに保存したかったので
new Date().getTime()でそのままセルに挿入したところ
うまくいかなかったので、いろいろ調べてみた。
・javascriptは1970年1月1日からのシリアル値だそうで
単位はミリ秒。
1秒は1000。
・MSエクセルは1900年1月1日からのシリアル値で
単位は1日が「1」
1秒は1/86400。 (86400は1日の秒数)
・・・・時間は小数点以下9桁入るらしい
ってことは1970/01/01 0:00:00 をシリアル値にすると25569。
google apps script上でnew Date().getTime()値を出してみたら
時差のないシリアル値らしきものが出てきたので
var s = new Date().getTime() + (1000 * 60 * 60 * 9);
で日本時間(+9)のJSシリアル値が出来る。
その値を一日の(MSエクセル)シリアル値(1000 * 60 * 60 * 24)で割る。
そこから1970/01/01 0:00:00 のMSエクセルシリアル値、25569を加えた数字をgoogle spreadsheetのセルに代入。
セルの書式を日付フォーマットにしたところうまく出来たようだ。
=((現在のJSシリアル値) + (時差)) / (MSエクセルの1日のシリアル値) + (1970年1月1日のMSエクセルシリアル値)
=(new Date().getTime() + (1000 * 60 * 60 * 9)) / (1000 * 60 * 60 * 24) + 25569
と、こんな式になる。
もっと楽な計算式あるかもしれないけどとりあえず^^;
0 件のコメント:
コメントを投稿