Google Homeを購入したのは日記に書いたとおり。
ぼくは高血圧ぎみで薬を飲んでいて最近は毎日血圧を測っているのだけれど、億劫で記録はしていなかった。いちいちノートにつけるのは面倒だしスマートフォンを開いてメモアプリを立ち上げるのも挫折した。
Google HomeならIFTTT連携でGoogle Spreadsheetに血圧を記録できるのではないかということに気づいたので、早速やってみた。
Google Assistantをトリガーにして出力先をGoogle Spreadsheetのadd row to spreadsheetに向ける。全体の設定としては以下の通り。
これで「ねえGoogle、血圧80の120を記録して」と発話すると、Google Homeが 80の120
の部分を抜き出してGoogle Spreadsheetに記録してくれる。上記の設定だとGoogleフォルダが自動で作られて、その中に血圧マスタというSpreadsheetが作られる。ここのB列に血圧が80 の 120
といった形で記録される。
一応CreatedAt
を記録するように設定しているのだけど何故かうまく記録されないので、この動画の通りにやる。
具体的には、血圧マスタのScript editorを開いて
function addDate(e) { var lr = SpreadsheetApp.getActiveSheet().getLastRow(); SpreadsheetApp.getActiveSheet().getRange(lr, 1).setValue(new Date()); }
このスクリプトを保存してトリガーを追加する。トリガーの設定は以下の通り。
ここまでで血圧のマスタが完成する。
どうも同一のファイルに別シートを追加するとIFTTTでうまく行を追加してくれなくなってしまうようだったので、このマスタとは別にデータを整形するためのスプレッドシートを作成する。
新たなシートを作成してSheet1とSheet2を作成しておいて、Sheet2の方にはA1のセルに=IMPORTRANGE("https://docs.google.com/spreadsheets/.../edit","Sheet1!A:B")
を入力する。URLの部分は、血圧マスタのスプレッドシートのURLを入れる。これで血圧マスタから整形用シートのSheet2に全く同じデータを取り込むことができる。
Sheet1にはA列が時刻、B列が下の血圧、C列が上の血圧という感じで整形してデータを入れる。1行目には見出しを書いておいて、A2には=Sheet2!A1
と入れる。B2には=IF( ISBLANK(Sheet2'!B1) , "", SPLIT(Sheet2!B1, " の "))
と入れる。最後にA, Bそれぞれの列について下の方まで内容を複製する。セルを複数選択してcmd+dで複製することができる。A1とかB1とかの数字部分が行に応じて勝手に書き換わってくれて便利。
これでデータをうまく整形できたかと思う。
あとはやる気の問題だけなので頑張って声を張って毎日血圧を記録していこう。
追記: Google Homeの認識がちょいちょい変わって、「80の114」というと「80 - 114」だったり「80 の 114」だったりするので、スクリプト部分を少し変えました。
function formatRow(e) { var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); var lr = sheet.getLastRow(); sheet.getRange(lr, 1).setValue(new Date()); var value = sheet.getRange(lr, 2).getValue(); var formattedValue = value.toString().replace(/\s(から|-)\s/, ' の '); sheet.getRange(lr, 2).setValue(formattedValue); }