かずきち。の日記

サーバサイドエンジニアのつぶやき

GASでGoogleカレンダーの書き込み処理をしていて、時間がずれてしまう場合の対処法

GASはスプシからカレンダーに書き込みができます
//CalendarApp 予約カレンダーを読みます
  var calendar = CalendarApp.getCalendarById("~~~~~~~~~~~~~~~~~@group.calendar.google.com");

  //今日の日付を表示
  var date = new Date();
  Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyyMMdd'));
  Logger.log(date);

  const title = value;
  const startTime = new Date('2020/4/1 10:00:00');
  const endTime = new Date('2020/4/1 12:00:00');
  const option = {
    description: 'イントロダクション',
    location: '〒xxx-xxxx ここは作業の場所を書きましょう'};

ここでAsia/Tokyoのロケーションで書き込んでいますが、結果は
f:id:kazukichi_0914:20210328141458p:plain

日本時間の4/1 10:00~12:00でスケジュールを書き込んでいるのに、3/31 23:00~24:00に書き込まれます。
なんなの、明らかにGASとカレンダーのタイムゾーンの違いだよね。
夜中の3:00頃から調べる作業が始まります。

結論は

GASのタイムゾーンエディタでのみ変更ができます

f:id:kazukichi_0914:20210328142200p:plain


新エディタに移行している人はGASのタイムゾーンの変更ができませんので、旧エディタへ戻してください。
戻し方は上記のとおりです。
戻しましたか?

戻し終わったら、ファイル→プロジェクトのプロパティを選択してください。

f:id:kazukichi_0914:20210328142654p:plain

ここを見ると、GMT-5:00 05:00ってあるので、GMT+9:00 東京になおしてください。

f:id:kazukichi_0914:20210328144728p:plain

この方法で、東部時間のタイムゾーンから日本時間に変更ができ、カレンダーに書き込めます。

追記:新エディタでもappscript.jsonをいじれば日本時間にできるみたいです。

f:id:kazukichi_0914:20210329152533p:plain
引用:https://qiita.com/sakaimo/items/f2b9bebea23974dd4b83

f:id:kazukichi_0914:20210329152419p:plain
引用:https://qiita.com/sakaimo/items/f2b9bebea23974dd4b83

appscript/jsonの設定をいじると時間帯の既定のタイムゾーンを設定できるみたいです。