前提・実現したいこと
Googleスプレッドシートと連動した週次レポートを作成しています。
特定のセルについては、作成日を起点として自動で日付を入れられるように組んでいます。
毎週水曜に火曜段階で集計した前週の数字についてレポート出力を想定しています。
そこで、
・A: シートのタイトル部分には「レポート期間の開始日=一週間前の月曜日=9日前」
・B: シートの右上には「数字集計日=昨日の値=1日前」
を入れるスクリプトを組みました。
発生している問題・エラーメッセージ
スプレッドシート、GASプロジェクトそれぞれのプロジェクト設定は「JST」に設定しており、
スクリプトでは「JST」と指定していますが、
レポートとして返される結果がJSTを計算したものではないようです。
詳細分からないのですが、GMTを基準にしているように見えます。
そのため、朝実行すると日付が一日ずれてしまいます。
該当のソースコード
GAS
1 var nowDate = new Date(); //日付を取得 2 var nowDate = new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate()); //形式変更 3 var reportweek = new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() - 9); //★一週間前の月曜の値に 4 var reportweekend = new Date(nowDate.getYear(), nowDate.getMonth(), nowDate.getDate() - 1); //★昨日 (火曜日) の日付に 5 var reportweekstart_format = Utilities.formatDate(reportweek,"JST","YYYYMMdd"); 6 var reportweek_format = Utilities.formatDate(reportweek,"JST","YYYY年MM月dd日"); //A出力 7 var reportweekend_format = Utilities.formatDate(reportweekend,"JST","YYYYMMdd"); //B出力
試したこと
- スクリプトの [実行] ※自分のブラウザ時間なら成功します
- ★をつけた部分の値変更の数字を1日変更する。※GASの実行時間に依存してしまうため、本質的な解決ではないと考えています。
解決方法として考えていること
nowDateの段階で、JSTを指定して日付を取得すると、解決しそうなのですが、
実現可能か分かっていません。
よろしくお願いいたします。
書いておられることをgoogleの用語に添って指定していただけますか?
> スプレッドシート、GASプロジェクトそれぞれのプロジェクト設定は「JST」に設定しており、
これは「ファイル」→「スプレッドシートの設定」や「ファイル」→「プロジェクトのプロパティ」で、タイムゾーンがGMT+9になっているという意味で良いですか?
> スクリプトでは「JST」と指定していますが、レポートとして返される結果がJSTを計算したものではないようです。
どういう意味えすか?「レポートとして返される結果」というのが分かりません。表示した日付がずれているという意味でよいですか?
> 詳細分からないのですが、GMTを基準にしているように見えます。そのため、朝実行すると日付が一日ずれてしまいます。
内部的にはGMTで計算されます。問題はGMT+9のタイムゾーンがあるかどうかです。
> スクリプトの [実行] ※自分のブラウザ時間なら成功します
これは午前9時以前に、ブラウザで関数の実行をしても日付がずれない、という意味で良いですか?