#はじめに
前回投稿した毎日のごはんを楽に記録する Part1の続きです。
今日何を食べたのかを、毎日忘れずに かつ 楽に 記録したい というのが目的です。
#Part1のバグ
昨日からこのシステムを運用していたのだが、晩御飯を記録していないはずなのに、記入を促すSlack通知が来ないことに気づいた。
この課題を解決する。
#原因
スプレッドシートの最終行の記入日付が今日の日付かを判定し、今日の日付が存在しない場合、通知を送るような実装になっていた。
そのため、今日の朝ご飯 or 昼ご飯を記入していると、記入済と認識されてしまい、通知が来なかった。
#対策
今日晩御飯が記入されているかどうかの判定基準に、日付だけでなく、ご飯の種別も判断するように以下のようにコードを改修した。
dailycheck.gs
//日付を比較して不一致なら書き込みフォロー処理関数呼び出し
if(lastdate2 != currentdate){
postSlack("今日の晩御飯は何を食べましたか?");
}else if(lastdate2 == currentdate){
//記入されているのが晩ごはんかを判定する
if(mealtype.match(/晩/) || mealtype.match(/夜/) || mealtype.match(/夕/)){
//今日の分は記入済みなのでなにもしない
}else if(mealtype.match(/朝/) || mealtype.match(/昼/)){
//朝または昼が記入されているので、書き込みフォロー関数呼び出し
postSlack("今日の晩御飯は何を食べましたか?");
}else{
postSlack("dailyCheck error1!\n" + lastdate2 + "\n" + currentdate + "\n" + mealtype);
}
}else{
postSlack("dailyCheck error2!\n" + lastdate2 + "\n" + currentdate + "\n" + mealtype);
}
#得た知識
変数内の文字列の検索には、matchが使える。
mealtype.match(/晩/) とすると、mealtypeの文字列内に"晩"という文字列が含まれているかをチェックできる。
#追記
Part3を書きました。