【経緯】
これまで、スピーカーが「お薬飲んで」と督促しても利用者から5回応答がなかったらカレンダーを「応答無」にして赤色から黄色に変更していた。にもかかわらず服薬イベントの終了時刻に達するまで5分おきに督促し続けていた。
そのため、6回目以降のスピーカーの督促に反応して「お薬飲んだ」と利用者が応答すると、スピーカーは「お薬カレンダーに記録しておきます」と言っておきながら、実際は応答無(黄色)を済(青色)に変更していなかった。
【原因】
この原因は、応答無の判定条件が終了時刻とは無関係に「5回目の督促」にしていたためである。そこで、今回応答無の判定条件を「現在時刻が終了時刻よりも超えていたら」に修正した。
【プログラムの修正】
修正対象のプログラムは「服薬管理システムA3(平松)」で、Googleドライブの「薬シェア」フォルダ内の「服薬管理」フォルダ内にある。
プログラムの修正箇所は、getEventsById関数内の応答無かどうかを判定するロジックである。従来は次のように督促回数(変数:num_reminder)が5回であるとしていた。
// 未服用でかつ催促の回数が5回になったらタイトルに「(応答無)」に変更し、色を黄色に変える if(response.taiking_status == '0' && num_reminder == 5){ result = event.getTitle().indexOf("("); //"("以降の文字を切り取る。 results = event.getTitle().substr(0,result); //タイトルを○○の薬(応答無)に変更する。 event.setTitle(results+'(応答無)'); //色を黄に変更する。 event.setColor(CalendarApp.EventColor.YELLOW); // LINEにメッセージを送る Drug_LINE_notify('お薬を飲むように' + num_reminder + '回催促しましたが応答がありません。'); }
今回、2行目のif文を次のように変更した。
if(response.taiking_status == '0' && isNoResponse(event)){
ここで、関数isNoResponseは応答無を判定する関数で、次のような関数である。
/** * 2021.9.10 応答無の判定条件 * 従来は「num_reminder == 5」だったが、これを * 「event.getEndTime() < current_time」 * にする(current_time = new Date())。 */ function isNoResponse(event) { var current_time = new Date(); var result = (event.getEndTime() < current_time) ? true : false; return result; }
この関数は現在時刻が終了時刻event.getEndTime()を過ぎていたらtrueを返す。
0 件のコメント:
コメントを投稿