Google Homeで子供のトイレ回数をカウントする
※2019/3/24 文言修正
久しぶりの更新。。。
とある理由で子供のトイレ回数を把握する必要があったため、
家にあるGoogle Home Miniを利用して、Googleドライブのスプレッドシートに
トイレ回数を日毎に書き込んでくれる仕組みを作ってみました。
仕組みはこんな感じ。↓
- Google Homeに「トイレしたよ」的なことを話しかけ、IFTTT経由でGoogleスプレッドシートのカウント用シートに記録
- 毎晩、カウント用シートから集計し記録用シートへ書き込み
ではやってみましょう。
0.Googleスプレッドシートの準備
今回は、以下の2つのスプレッドシートを利用します。
- カウント用シート...Google Homeからの都度書き込み用。作業用。
- 記録用シート...カウント用シートの集計用。こっちが本丸。
というわけで、スプレッドシートを2つ作ります。
カウント用は何もしません。作りっぱなし。
記録用は以下のような感じで、日毎のトイレ回数が分かるようにしました。
1.Google Home→IFTTT→Googleスプレッドシートの連携作業
まず、Google Homeに話しかけたら、
Googleスプレッドシートのカウント用シートに書き込みがされるようにします。
これはIFTTTで設定。
なお、私は「アンパンマン」と話しかけると書き込まれるようにしました。
子供が遊ぶ可能性もあるので、このあたりはお好みでどうぞ。
thisにはGoogle Assistant→Say a simple phraseを選択し、以下のように設定。
thatにはGoogle Sheets→Add row to spreadsheetを選択し、以下のように設定。
カウント用のスプレッドシートを設定し、「おしっこ」と書き込まれるようにしました。
フォルダパスは、IFTTTフォルダに作成したので指定なし。
以上で、IFTTTでの設定が完了。
2.Googleスプレッドシートでの集計作業
ここでは、カウント用シートに書き込まれた「おしっこ」の数を集計し、
記録用シートに日毎に書き込むためのスクリプトを作成します。
Google Driveにて記録用シートを開き、メニューの
ツール→スクリプトエディタ で以下のようなスクリプトを作成しました。
function main(){
//カウント用・記録用スプレッドシートの取得
var count_spreadsheet = SpreadsheetApp.openById('カウント用スプレッドシートのID');
var record_spreadsheet = SpreadsheetApp.openById('記録用スプレッドシートのID');
//カウント用・記録用シートの取得
var count_sheet = count_spreadsheet.getSheetByName('カウント用シート名');
var record_sheet = record_spreadsheet.getSheetByName('記録用シート名');
//カウント対象の単語の設定
var sho = "おしっこ";
//単語の数をカウント
var sho_count = ToiletCount(count_sheet,sho);
//カウントした数を記録
RecordToSheet(record_sheet,3,sho_count);
//カウント用シートをクリア
ClearSheet(count_sheet);
}
//sheet内にあるstringの数を返す関数
function ToiletCount(sheet,string) {
var count = 0;
//カウント
for(var c=1; c < 15; c++){
var string_kari = sheet.getRange(1,c).getValue();
if(string_kari == string){
count = count + 1;
}
}
return count;
}
//sheetの今日の日付の行のcolumnに、countを入れる関数
function RecordToSheet(sheet,column,count){
//今日の日付を取得
var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', "yyyy/MM/d");
//最終行の位置および最終行の日付を取得
var lastrow = sheet.getLastRow();
var lastdate = sheet.getRange(lastrow, 2).getValue();
var lastday = Utilities.formatDate(lastdate, 'Asia/Tokyo', "yyyy/MM/d");
//最終行の日付が空白なら今日の日付をセット
//最終行が空白でなく、かつ日付が今日じゃないなら次の行に今日の日付をセット
if (lastday == ""){
sheet.getRange(lastrow, 2).setValue(today);
}else if (lastday != today){
lastrow = lastrow +1;
sheet.getRange(lastrow, 2).setValue(today);
}
sheet.getRange(lastrow,column).setValue(count);
}
//sheetをクリアする関数
function ClearSheet(sheet){
sheet.clear();
}
スクリプトを作ったら、メニューの
編集→現在のプロジェクトのトリガー にて
以下のように設定。
毎日深夜に集計作業が行われるようにしました。
以上で作業は完了です。お疲れさまでした。
カウント用シートができてしまうのがちょっと微妙な感じ。。。
何かいいやり方はないものか。。。
あと初めてソースコードをブログで載せてみましたが、
フォントとか微妙すぎるので気が向いたら直します。