前提
この度、職場の要望であるシステムを作ることになったのですが、色々検討した結果 googleのプラットフォームが最も作りやすいと判断し、googleフォームを送信した日時を取得して、その日付に応じてフォームの内容を変更し、そしてその内容に応じて返信メールを送るような仕組みを作っています。
ですが、その日付を計算して色々行う部分で、理解が追いつかないトラブルに悩まされています。
私の方は、かれこれ数十年と複数の言語にわたって日常的にちょっとしたスクリプトを開発し続けていますが、GASはようやく6件目となります。
経験不足で、不具合原因がわからない状況のため、何かしらのご教授いただきたいと存じます。
実現したいこと
3つの変数が独立して別々の日付を記録するようにしたい
発生している問題・エラーメッセージ
ある処理を判断するための日付を設定するために
- 今日の日付:todayDate
- 起算日:initDate
- 終了日:termDate
の3つの変数を設定したところ,
- 3行目 今日の日付->todayDate ・・・問題なし
- 6行目 todayDate->initDate ・・・問題なし
- 7行目 initDateの時刻を変更・・・todayDate も同じ値に変更
- 13行目 termDateの日付を計算・・・todayDate, initDateともに同じ値に変更
なぜ一つの変数を変えると、他も連動して同じ値になってしまうのか?
全く状況がわからず理解が追いついていません。
エラーは起きませんが私にとっては不可解な現象となっています
該当のソースコード
GAS
1function MenuSet(){ 2 // todayDate: 開いた日時 3 var todayDate = new Date; 4 // initDate: 起算日 8:00 AM 以降は翌日扱い 5 6 var initDate = todayDate; 7 initDate.setHours(0,0,0,0); 8 if (todayDate.getHours() > 8){ 9 initDate.setDate(todayDate.getDate()+1); 10 } 11 // termDate: 終了日 起算日から2週間 12 var termDate = initDate; 13 termDate.setDate(initDate.getDate()+14); 14}
試したこと
- 年月日時を全部バラして、もしくはシリアル値を扱う分には問題は起きない
補足情報(FW/ツールのバージョンなど)
変数については3つとなっていますが、実際にはも2つほど増える予定です。
この3つはよく利用する値であるため、この関数でさっさと計算して確保しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。