スプレッドシートに値が入力される度に日付と1ヶ月後の日付を取得し埋め込んでおります。
上記のようにうまく日付を取れているのですが別の関数で日付を比較しているのですがif文でtrueが返ってきません。
ログをみたのですが
cansellRow[i]
[ [ Thu Jul 23 2020 00:00:00 GMT+0900 (日本標準時) ], [ Thu Jul 23 2020 00:00:00 GMT+0900 (日本標準時) ], [ Wed Jun 24 2020 00:00:00 GMT+0900 (日本標準時) ], [ Fri Jul 24 2020 00:00:00 GMT+0900 (日本標準時) ], [ Fri Jul 24 2020 00:00:00 GMT+0900 (日本標準時) ] ]
today
Wed Jun 24 2020 00:00:00 GMT+0900 (日本標準時)
とちゃんと取れています。
//退会日のアカウントがないか確認する関数 function checkAcount(){ //年月日を取得 var today =new Date(new Date().toDateString()); // アクセストークン var ACCESS_TOKEN = 'xxxxxxx'; // 利用しているシート var data = SpreadsheetApp.openById('xxxxxxx').getSheetByName('シート1'); //最終行を取得 var last_row = data.getLastRow(); //全ての行を取得 var allRow =data.getRange(2,2,last_row-1,4).getValues(); //退会の行のみ取得 var cansellRow=data.getRange(2,4,last_row-1,1).getValues(); console.log(cansellRow); console.log(today); for(var i = 2; i < cansellRow.length; i++) { if(cansellRow[i] == today) { console.log("ここまでは行けてる"); function pushMessage() { var postData = { "to": "xxxxx", "messages": [{ "type": "text", "text": "おはよう", }] }; var url = "https://api.line.me/v2/bot/message/push"; var headers = { "Content-Type": "application/json", 'Authorization': 'Bearer ' +ACCESS_TOKEN, }; var options = { "method": "post", "headers": headers, "payload": JSON.stringify(postData) }; var response = UrlFetchApp.fetch(url, options); } } } }
---他に試したこと
moment.jsというライブラリを入れてしっかりと値を取れているのを確認して
if(cansellRow[i].isSame(today,"day")){ console.log("ここまでは行けてる"); }else{ console.log("あかん"); }
上記ではそもそもエラーになりました。エラー文
TypeError: cansellRow[i][0].isSame is not a function at checkAcount(コード:78:25)
など色々試したのですがうまく行きません。
どなたか良い方法、またはコードで間違っている箇所があれば教えていただければ幸いです。
回答2件
あなたの回答
tips
プレビュー