
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月から夏。ということです
こちらからは以上です