質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

2862閲覧

GASで日付の比較をしたい

wciwij

総合スコア3

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2023/04/30 08:19

実現したいこと

googleフォームでスプレッドシートに登録された日付をチェックして処理したいです。
具体的にはgoogleフォームから日付指定で処理依頼があり、
明日のやることを抽出して以降の処理に回しています。
上では伝わらないかもしれませんが、日付のチェックが必須です。

前提

日付の比較がうまくいきません。
見た目は同じ日付ですが、比較時に違うものとして処理されてしまいます。
.gettime()をつければよいとの記載もありましたが、gettimeをつけても違う日にちとして処理されてしまいます。

該当のソースコード

//スプレッドシートの値は配列で保管 kaitou_data[1][3] //今日日付は以下で取得 var today = new Date(); today.setHours(0,0,0); Utilities.formatDate (today, 'Asia/Tokyo', 'yyyy/MM/dd') var today.setDate(today.getDate() + 1);

ネット上に翌日計算で以下があったのですが、コンパイルエラーになります。
var today.setDate(today.getDate() + 1);

試したこと

いろいろと表示させてみたのですが、どれもtodayのgettimeと同じにはなりませんでした。

console.log(kaitou_data[1][3]);

Sun Apr 30 2023 00:00:00 GMT+0900 (Japan Standard Time)

console.log(kaitou_data[1][3].gettime()

コンパイルエラー

console.log(new Date(kaitou_data[1][3]);

Sun Apr 30 2023 00:00:00 GMT+0900 (Japan Standard Time)

console.log(new Date(kaitou_data[1][3]).gettime())

1682780400000

var test = new Date(kaitou_data[1][3]);
Utilities.formatDate( test, 'Asia/Tokyo', 'yyyy/M/d')
console.log(test);
console.log(test.getTime());

Sun Apr 30 2023 00:00:00 GMT+0900 (Japan Standard Time) 1682780400000

console.log(today);

Sun Apr 30 2023 00:00:00 GMT+0900 (Japan Standard Time)

console.log(today.gettime());

1682780400579

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ms単位まで比較していることが原因かと思われます。

JS

1// スプレッドシートの値は配列で保管 2var kaitou_date = new Date(kaitou_data[1][3]); 3kaitou_date.setHours(0, 0, 0, 0); 4 5// 今日の日付を取得 6var today = new Date(); 7today.setHours(0, 0, 0, 0); 8 9// 明日の日付を取得 10var tomorrow = new Date(today); 11tomorrow.setDate(tomorrow.getDate() + 1); 12 13console.log(kaitou_date); 14console.log(today); 15console.log(tomorrow); 16 17// 日付の比較 18if (kaitou_date.getTime() === tomorrow.getTime()) { 19 // kaitou_dateが明日の日付と一致する場合の処理 20 console.log("kaitou_dateは明日の日付です"); 21} else { 22 // kaitou_dateが明日の日付と一致しない場合の処理 23 console.log("kaitou_dateは明日の日付ではありません"); 24}

こちらで解決されるかと思います。

投稿2023/04/30 09:57

jp-seemore.com

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wciwij

2023/04/30 13:54

ありがとうございました! かなり悩んだのにあっさり解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問