排尿・排便カウンターを作った話
どうも。月曜日から検査入院中の僕です。
朝から大量に採血されて恐縮です。
更新履歴
- 2014/05/14 排泄区分に「導尿」を追加。細かい修正。要スクリプトの更新(コピペ上書きでOK)
- 2014/05/14 処理後にクリアせずに履歴を残す様に修正
入院ライフハック?
さて、入院ライフを少しでも楽に?もしくは退屈凌ぎになんかプログラム書くか的なところで、毎朝看護師さんに起こされて…
ときふじさん、昨日のおトイレ、何回しました?
と質問されるワケで、これはイチイチ排泄回数なんてカウントしてないぜベイビーということでGoogleドライブのフォームとGoogle Apps Scriptを使って「排尿・排便カウンター」というものを作ってみました。
使い方は「排泄区分」を「排尿」もしくは「排便」から選択(2014/05/14 排泄区分に「導尿」を追加しました!)してコメントがあれば適当に入力して送信するだけ。あとは決められた時間になると自動的に集計して以下の様なメールを送ります。
Googleドライブのフォームを作ろう
フィールド「排泄区分」の作成
フィールド「コメント」の作成
※ なくてもOK(というかスクリプトでこのフィールドを使っていないwwww) フィールドの追加を行う
とりあえず以下の通りとする。(いらないんだけど…)
データの保存先をスプレッドシートにしちゃう
なにも考えず「作成」する
するとこんなヤツが作成される。
中を開くと…
フォームから収集されるデータがこのスプレッドシートに溜まっていくということ。
フォームのURLは?
スプレッドシートにスクリプトを仕込む
先ほど保存先として作成したコイツを開く。
ツール→スクリプトエディタをクリックして空のスクリプトを作成します。
おもむろに、そしてがむしゃらに以下のコードをコピペしてください。そしておもむろにMacなあなたはCmd + Sを、そしてWindowsなあなたはCtrl + Sをして保存しましょう。(ついでにスクリプトの名前も適当に…)
function reportExcretion() { var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getDataRange(); var numRows = rows.getNumRows(); var values = rows.getValues(); var urination = 0; // 排尿回数 var defecation = 0; // 排便回数 var catheterization = 0; // 導尿回数 var lastRowCount = 1; // 前回処理した行 // 前回の続きの行数をセット if(sheet.getRange("D1").getValue() != ""){ lastRowCount = parseFloat(sheet.getRange("D1").getValue()); } // 排泄区分でカウントアップ(集計) for (i = lastRowCount; i <= values.length; i++){ if(typeof values[i] !== "undefined"){ switch(values[i][1]){ case "排尿": urination++;break; case "排便": defecation++;break; case "導尿": catheterization++;break; default:break; } } } // 行を記録 sheet.getRange("D1").setValue(values.length); // 1桁の数字を0埋めで2桁にする var toDoubleDigits = function(num) { num += ""; if (num.length === 1) { num = "0" + num; } return num; }; // 集計結果が0以上ならメール通知 if(urination + defecation + catheterization > 0){ var thisDate = new Date(); var thisYYYY = thisDate.getFullYear(); var thisMM = toDoubleDigits(thisDate.getMonth()+1); var thisDD = toDoubleDigits(thisDate.getDate()); var thisHH = toDoubleDigits(thisDate.getHours()); var thisMin = toDoubleDigits(thisDate.getMinutes()); var thisSS = toDoubleDigits(thisDate.getSeconds()); var thisDateStr = thisYYYY.toString() + "/" + thisMM.toString() + "/" + thisDD.toString() + " " + thisHH.toString() + ":" + thisMin.toString() + ":" + thisSS.toString(); var recipient = Session.getActiveUser().getEmail(); var subject = "排尿・排便カウンター " + thisDateStr; var body = "排尿:" + urination + "\n排便:" + defecation + "\n導尿:" + catheterization; MailApp.sendEmail(recipient, subject, body); Logger.log("排尿:" + urination); Logger.log("排便:" + defecation); Logger.log("導尿:" + catheterization); Logger.log(thisDateStr); } };
承認してやりましょう(初回実行のみ)
初回だけ実行承認処理が必要です。やっちゃってください。
すると承認確認画面が出るので認証しちゃいましょう。
タスクを仕込む
大体、看護師さんが起こしに来るのが僕の場合朝の7:00〜8:00くらいなのでその1時間前くらいに前日の排尿・排便を集計してくれたらいいので…
それではお楽しみください
トイレで用を足しながらおもむろにフォームのURLから入力していきましょう!!
- 作者: 横山隆司
- 出版社/メーカー: 秀和システム
- 発売日: 2013/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る