0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

休職中の睡眠リズムを可視化したい!Google Health API (v4) × GAS 連携苦闘記

0
Posted at

0. 背景:なぜこれを作ったのか

2026年7月1日から休職に入りました。産業医から指摘された課題は以下の3点です。

  • 睡眠リズムの乱れ
  • 中途覚醒の多さ
  • 中途覚醒後の再入眠の困難

Pixel Watch 4は詳細な睡眠ステージを記録してくれますが、標準アプリでは「点」のデータしか見えず、「線」としての分析(中途覚醒の頻度や傾向)が困難でした。
「暇(?)だし、APIでスプレッドシートに書き出して、徹底的に分析してやろう」と思い立ったのがきっかけです。
更に、GeminiやClaude等、各種LLM AIが新旧入り混じった情報を出してくるので、この記事(リンクの公式リファレンス)を読ませておけば、間違いないという備忘録も兼ねています。

1. 実現したいこと(MySleepDashboardの要件)

単なる「睡眠時間の記録」ではなく、以下の分析ができる環境を構築することをゴールに設定しました。

  • 中途覚醒の可視化: 何時に目が覚め、その後どれくらいの時間「覚醒状態」だったかの抽出。
  • データの連続性: 7月1日の休職開始日から今日までの全データをスプレッドシートへ一括取得。
  • 相関分析: 睡眠の質と、日中の体調や活動量の相関をグラフ化し、回復の兆しを客観的に捉える。

2. 実装のキモ:Google Health API (v4) への到達

Google Fit APIのサポート終了(2025年)に伴い、後継のGoogle Health API (v4) への移行が必須となりましたが、日本語のGAS連携情報はまだ極めて少ないのが現状です。ネット上には古い Google Fit API や Fitbit API の情報が混在していますが、2026年8月現在の Google Health API (v4) での正解はこちらです。

認証とURLの正解

  • APIバージョン: v1 ではなく v4 を使用。
  • エンドポイント: https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints
  • リクエスト: startTime などのパラメータは使えません。filter パラメータ 一本で指定します。

filterパラメータによるデータ抽出

startTime などの直感的なパラメータは廃止されており、全て filter 文字列で指定する独特な仕様になっています。

// フィルタの構文が独特。sleep.interval.end_time を指定するのがコツ
const filterStr = `sleep.interval.end_time >= "${startTimeStr}" AND sleep.interval.end_time < "${endTimeStr}"`;
const url = `https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints?filter=${encodeURIComponent(filterStr)}`;

3. 遭遇したエラーと解決策

  1. 404 (Not Found):
    古いドキュメントのURL(/v1/users/me/sleep など)を叩くと、ロボットの絵のHTMLページが返ってきます。公式リファレンスを読み込み、/v4/.../dataPoints が正解だと判明しました。
  2. 400 (Bad Request):
    APIリファレンスの Query parameters を見ると、startTime という項目が存在しませんでした。すべて filter 文字列の中に含めるルールに変更されていました。
  3. パースエラー:
    APIのレスポンス階層が想像以上に深かった(result.dataPoints[0].sleep.interval...)のですが、これもリファレンスのJSON構造と照らし合わせることで解決しました。

4. 今後の展望

ようやく「データがシートに届く」というスタートラインに立てました。
現在はデータの詳細化(sleepStages の解析)と、スプレッドシート上でのダッシュボード構築を進めています。
「自分の体調をデータで管理し、改善のサイクルを回す」というプロセス自体が、回復への大きな一歩だと感じています。

5. 参考にした公式リファレンス


おわりに

執筆段階ではダッシュボードの完成はしておりません。
また、今後の更新はGoogleスプレッドシートを弄るほうが多いので、記事にする予定も今のところありません。
それでもこの記事が、技術的な不便を感じている人だけでなく、同じように自身の体調管理のためにデータを活用したいと考えている誰かの助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?