GASで契約終了日が今日から30日以内だったらSlackに通知が来るようにしたい
解決したいこと
GASでスプレッドシートの特定の列から日付(契約終了日)を抽出して、
契約終了日が今日から30日以内だったらSlackに通知が行くようにしたいです。
目的は、契約終了日1ヶ月前に、営業が漏れなくアプローチできるようにするためです。
発生している問題・エラー
エラーは出ていないのですが、以下のようなコードにすると、
今日より前の日付、すなわち契約終了してしまっているものまで抽出されてしまいます。
function alertContract() {
var mySheet = SpreadsheetApp.openById('sheetid').getSheetByName('シート1'); //スプレッドシートを取得
var lastRow = mySheet.getLastRow(); //スプレッドシートの最終行を取得
var today = new Date(); //今日の日付を取得
/* 契約終了日まで30日以内だったらSlack投稿 */
for (var i = 5; i <= lastRow; i++) {
var Di = mySheet.getRange(i, 4).getValue(); //企業名(Di列)を取得
var dateAAi = new Date(mySheet.getRange(i, 27).getValue()); //契約終了予定日(AAi列)を取得
var period = dateAAi.getDate() - today.getDate(); //今日から契約終了予定日までの期間を取得
if (period <= 30) { //終了30日前の企業に通知
//通知文を作成
var strText = "@XXX " + Di + "様の契約終了日が迫っています。必ずアプローチしましょう。期限:" + dateAAi;
//Slackへ投稿
postSlack(strText);
}
}
}
自分で試したこと
以下のように、if文の中の条件を
if (period <= 30)から
if (period >= 0 && period <= 30)に変更してみました。
function alertContract() {
var mySheet = SpreadsheetApp.openById('sheetid').getSheetByName('シート1'); //スプレッドシートを取得
var lastRow = mySheet.getLastRow(); //スプレッドシートの最終行を取得
var today = new Date(); //今日の日付を取得
/* 契約終了日まで0~30日だったらSlack投稿 */
for (var i = 5; i <= lastRow; i++) {
var Di = mySheet.getRange(i, 4).getValue(); //企業名(Di列)を取得
var dateAAi = new Date(mySheet.getRange(i, 27).getValue()); //契約終了予定日(AAi列)を取得
var period = dateAAi.getDate() - today.getDate(); //今日から契約終了予定日までの期間を取得
if (period >= 0 && period <= 30) { //終了30日前の企業に通知
//通知文を作成
var strText = "@XXX " + Di + "様の契約終了日が迫っています。必ずアプローチしましょう。期限:" + dateAAi;
//Slackへ投稿
postSlack(strText);
}
}
}
すると、トリガーでエラーは出ていないのですが、Slackに全く通知が来なくなってしまいました。
該当する案件があるので、データがないというわけではありません。
エラーが出ていないため、原因がつかめずにおります。
どなたかご教示いただけますと幸いです。
よろしくお願いします。