GASの日付処理 SummerTimeで涙

GASの日付処理 SummerTimeで涙

Googleフォームで申し込みフォームを作っているのですが、直前に申し込みがあると対応慌ててしまうので、2日後以降に申し込みが出来るようにしています。

GASを日次で起動して、プルダウンの日付を更新する処理を実行してます、処理は以下の感じです。

function myFunction() {
  const form = FormApp.getActiveForm();
  var items = form.getItems(FormApp.ItemType.LIST);

  items.forEach(function (item) {
    if (item.getTitle() == '日付のプルダウン') {
      var listItemQuestion = item.asListItem();
      var choices = [];
      let date = new Date();
      date.setDate(date.getDate() + 2);
      for (i = 0; i < 30; i++) {
        choices.push(listItemQuestion.createChoice(Utilities.formatDate(date, 'JST', 'yyyy/MM/dd')));
        date.setDate(date.getDate() + 1);
      }
      // プルダウンの選択肢を上書きする
      listItemQuestion.setChoices(choices);
    }
  });
}

2日後以降の日付で、プルダウンの内容を更新するような処理をしています。

しばらく問題なく動いていたのですが、ある日エラーになり実行ログを見てみるとこんなエラーになっていました

Exception: Questions cannot have duplicate choice values.

なんだかコード見てもエラー箇所わからないので、date変数をconsole.log()で見てみました。以下が結果です

1:59:24	情報	Sun Feb 12 2023 11:59:24 GMT-0500 (Eastern Standard Time)
1:59:24	情報	Mon Feb 13 2023 11:59:24 GMT-0500 (Eastern Standard Time)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1:59:24	情報	Fri Mar 10 2023 11:59:24 GMT-0500 (Eastern Standard Time)
1:59:24	情報	Sat Mar 11 2023 11:59:24 GMT-0500 (Eastern Standard Time)
1:59:24	情報	Sun Mar 12 2023 11:59:24 GMT-0400 (Eastern Daylight Time)
1:59:24	情報	Mon Mar 13 2023 11:59:24 GMT-0400 (Eastern Daylight Time)

なんだか、
GMT-0500 (Eastern Standard Time) → GMT-0400 (Eastern Daylight Time)
に変わってますね。。。

Utilities.formatDate(date, 'JST', 'yyyy/MM/dd')で日本時間に変換しているので、これの結果も確認してみます。(時分まで出すようにしてみました)

2:03:29	情報	2023/02/13 02:03
2:03:29	情報	2023/02/14 02:03

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2:03:29	情報	2023/03/11 02:03
2:03:29	情報	2023/03/12 02:03
2:03:29	情報	2023/03/13 01:03
2:03:29	情報	2023/03/14 01:03

1時間ずれてますね、このテストは2時に実行していますが、
実際の処理は日付が変わった0時台に実行していたので、1日前の日付となってduplicateとなっていたようです。
調べてみると3月からSummerTimeが始まるということで、日本だとSummerTimeないので(ですよね?)、全然意識してませんでした。

そもそもタイムゾーンを日本にしていないのが良くないということで、タイムゾーンを修正しました。

設定画面にタイムゾーンがあるので、
(GMT-05:00) アメリカ東部時間 – ニューヨーク
から
(GMT+09:00) 日本標準時 – 東京
に変更します。これでOKです
念の為実行結果見てみますね

2:16:31	情報	2023/02/13 02:16
2:16:31	情報	2023/02/14 02:16

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~省略~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2:16:31	情報	2023/03/11 02:16
2:16:31	情報	2023/03/12 02:16
2:16:31	情報	2023/03/13 02:16
2:16:31	情報	2023/03/14 02:16

良さそうです
ということで今回学んだのは、ニューヨークは3月から夏。ということです
こちらからは以上です