ifttt
GoogleSpreadSheet
GoogleHome

Google Homeに話しかけて手軽に行動ログを記録できるようにした

はじめに

在宅フリーランスしています。今日一日何をやっていたっけ?とわからなくなったりしていて、生産性も把握しないとという思いもあり作業記録をカンタンに取れるものはないかと色々試していました。
そこでGoogle Homeで音声記録できたらカンタンじゃない?と思い、今からやることをGoogle Homeに話しかけて、それをGoogleスプレッドシートに記録するようにしてみました。

参考にした記事

使用したもの

  • Google Home Mini
  • IFTTT
  • Googleスプレッドシート & Google Apps Script

やったことの概要

  1. Googleスプレッドシートの作成
  2. IFTTTのApplet作成。トリガーとなるフレーズとGoogleスプレッドシートへの書き込み処理を登録
  3. Googleスプレッドシートに日時を取得するスクリプト設定

1.Googleスプレッドシートの作成

任意の場所に新規でGoogleスプレッドシートを作成します。
私はフォルダ「GoogleHome」を作成し、そこにファイル名「日記」のスプレッドシートを作成しました。
フォルダ名、ファイル名はIFTTTの設定で使用します。

2.IFTTTのApplet作成

まずはトリガーとなるフレーズを登録する「this」の作成。
IFTTTのNew Appletから「this」をクリック。
スクリーンショット 2017-12-14 13.57.36.jpg

thisの設定

「this」はGoogle Assistantを使います。
scr2.jpg

今回は話したことを記録してほしいのでトリガーには「Say a phrase with a text ingredient」を選択
this1.jpg

トリガーを設定
・トリガーとなるフレーズを設定します。3パターン登録可能です。
・4行目はGoogleHomeの応答。ちゃんと認識されたとき返事をしてくれます。
例えば、「ねえ、Google 今から掃除をするよ」と話しかけると「はーい 掃除がんばってね」と返事をしてくれるわけです。
this2.jpg

thatの設定

Googleスプレッドシートへの書き込み処理を行う「that」を作成します。
「that」をクリック。
that.jpg

Google Sheetsを使います。
that2.jpg

スプレッドシートに行を追加していくので「Add row to spreadsheet」を選択
that3.jpg

作成したスプレッドシートのファイル名とフォルダ名を設定。
「Formatted row」には作成したスプレッドシートのフォーマットにあわせて記入します。
A列に「日付」B列に「記録したいフレーズ」としたいので以下のようにしています。|||で1セルの意味になります。[TextField]にはthisの$が反映されます。
that4.jpg

これでIFTTTのAppletが完成です。

3. Googleスプレッドシートに日時を取得するスクリプト設定

日付と時刻がIFTTTで設定できない(バグ?)ためスプレッドシートのスクリプトで日時を設定します。

  • A列に現在時刻を設定
  • 現在時刻と前行の時刻の差分を取って、経過時間(作業時間)を分単位で算出して前行のC列に設定
  • 最後の行は時間単位に変換してD列に設定。ただしこの計算では差分が24時間以内でないと正しく算出されません。ぱっと見の目安として表示しています。
var sheet = SpreadsheetApp.getActiveSheet();

function addDate() {
  var lastrow = sheet.getLastRow();
  var currenttime = new Date()  
  if (sheet.getRange(lastrow, 1).getValue() == "") 
    sheet.getRange(lastrow, 1).setValue(currenttime);

  if (sheet.getRange(lastrow-1, 3).getValue() == "")
    var starttime = sheet.getRange(lastrow-1, 1).getValue()
    var elapsedtime = parseInt((currenttime.getTime()-starttime.getTime())/60000)
    sheet.getRange(lastrow-1, 3).setValue(elapsedtime)
    // 時間表示
    sheet.getRange(lastrow-1, 4).setValue(elapsedtime/1440)
}

トリガーの設定。
「スプレッドシート」「値の変更」で実行されるように設定。
script.jpg

日時が見やすいよう表示形式を設定。

yyyy"年"m"月"d"日("ddd") "hh":"mm":"ss""

2018年2月2日(金) 20:48:42 のように表示されます。

このようなログが記録されます

sheet.jpg

以上で行動ログ(作業記録)がカンタンにとれるようになりました。
作成してから1ヶ月以上になりますが、完ぺきではないですが継続して記録できています。
これまでtogglを使ってみたりしましたが続かず。。。この方法だと続けることができているのは、記録するときにブラウザを開いたり等の準備がいらない、Google Homeに話しかけるだけでいいという手軽さ。
応答を工夫して最初は「○○記録しました」と事務的に応答していたところを「はーい、○○がんばってね」に変更したことで「うん、がんばる」とモチベーションが上がるので、やるときにはGoogle Homeに報告しようという気持ちになっているからかな。
音声入力は面白い。

次は集めたデータを分析することをやってみようと思います。