以前ちょっと作っておいたGoogle Apps Scriptを使ってOura ringの情報をGoogle Sheetsに 保存しておくツールをアップデートしたのでその話。
API + GAS + Sheets
APIを公開しているサービスなら、GASを使ってそのAPIを叩いて情報を取得して Google Sheetsに保存する、というのが 無料で情報を保存しておくのに一番手軽な方法だと思います。
csvでexportできたりそもそもアプリで見れば十分なものもありますが、 取り敢えず一度設置しておけば常にSheetsに最新情報が保存されてる状態に なるので、何かと便利です。
Oura API
2024年にV1 APIが廃止されて現在はV2 APIが提供されています。
この変更もあって、以前のスクリプトは使えなくなったので、 新しいスクリプトを作り直しました。
基本的な使い方はV1/V2でそれほど変わらないと思います。
一つひっかっかった点として、
このAPIのドキュメントの中にある
各APIの説明のGET
のところを押すと見れるURLがAPIのURLとは違う点。
https://cloud.ouraring.com/...
となってますが、これは Oura on the webのURLで その下のV2…などは無いように見えます。
実際にはcloud
ではなくapi
https://api.ouraring.com/...
すぐ下のcURLなどの実際の使用例を見ればURLがapi
になっているのでそちらを最初から参照すれば良いですが、
最初、このcloud...
の方を使ってしまって少しハマりました。
Oura-gas
ということで作り直したスクリプト集がこれ。
使い方はREADME参照。
現状は以下のような関数があります。
fillPerosnalInfo
: 入力した年齢や身長などの個人情報、fillDailyReadiness
: 日毎のスコア、及び関連するデータfillDailySleep
: 日毎の睡眠スコア、及び関連するデータfillDailyStress
: 日毎のストレスデータfillSleep
: 睡眠ごとのデータ
これらの関数を適当なTriggerで1日1回実行するなりしてデータをSheetsに保存しておくことができます。
睡眠のデータに関して、Daily Sleep Routesという項目がfillDailySleep
で保存できるようになってますが、
これで取れるデータは日毎の睡眠総合スコアに加えてcontributors
という項目があります。
その中にtotal_sleep
やdeep_sleep
といったデータが入っていますが、
これらは睡眠時間とかではなく、0~100までの値が入っています。
アプリとかで睡眠の項目を見ると睡眠コントリビューターという欄があって合計時間や深い睡眠という項目がありますが、 実際の時間とともに色のついたバーがあると思いますが、これが0~100で高いほうが良いスコアでそれらを統合して総合スコアを出しているようです。
合計時間がどれくらいならスコアがいくつになるかは人それぞれでなにか計算しているようです。
Oura APIの公式にはこの辺書いてませんが、取得できるデータはアプリやOura on the web で得られる情報が全てっぽいので それらと比べながら見てみるとどれがどの値を示しているか大体分かると思います。
Oura APIの説明してるブログとかだとこのコントリビューターの値を”時間”と言い切ってるものも結構あるので注意。
GASでのOAuth2.0認証を使ったAPIの利用
同じようなことは他のAPIでも使えます。
認証の仕方に関してGoogleが色々とサンプルを提供してくれてるので有名どころは 直接使えるものもあります。
以下はこれまでに作ったもの。
OuraのようにWithingsに記録されたデータをGoogle Sheetsに保存するスクリプト。
Slackが無料利用で90日より前のメッセージが見れなくなってしまったのでバックアップしておくシステム。
NatureRemoの情報を保存しておくスクリプト。
GitHubのOrganization内のmemberのこれまでに得たstarの数やPRなどのアクティビティを取得するスクリプト。