カレンダー関係のスクリプトの動作がどうもおかしい
GASでGoogleカレンダー関係のスクリプトを書いていて、どうも動作がおかしい。
あれこれ調べていたら、どうやらnew Date()で生成した日付がおかしいことが分かりました。
例えば、こんな感じで日付を指定して予定を取得し
const startTime = new Date('2022/01/19 00:00:00');
const endTime = new Date('2022/01/19 23:00:00');
const events = calendar.getEvents(startTime, endTime);
やりたいことは1/19の予定を取得したいのですが、なぜか1/20の予定も取得されてしまいました。
どうやら指定した時間が外国の時間だと解釈されてしまい。時差の分だけ翌日に食い込んでしまったようです。
プロジェクトのタイムゾーンを日本に設定
GASの場合は、プロジェクト自体のタイムゾーンを日本時間にすることで、正しく解釈してもらえるようになります。
プロジェクトの設定で「「appsscript.json」マニフェスト ファイルをエディタで表示する」にチェックを入れる
「コード」に"appsscript.json"が表示されるのでクリック
"timeZone": "America/New_York"を"Asia/Tokyo"に変更
これでプロジェクト内の時計が日本時間に統一されました。