iPhone のヘルスケア apple_health_export
iPhone のヘルスケア アプリ、体重とか体温とか入力してるんだけど、外には書き出せないのかな。
Windows PowerShell
見たいあたり CSV にしましょうか。
export_cda.xml が入力データっぽい、今日はそれを読む。export.xml の方はサイズが大きい量も多く、IPhone で自動収集されるデータ、歩数とか、入ってるみたい。
helth_care_data.rb
- ヘルスケア アプリ
- 「概要」画面
- 右肩 人型マーク
- 人型マーク 画面
- 画面最下部に「すべてのヘルスケアデータを書き出す」リンク
- 押下
- 「ヘルスケアデータを書き出す」ダイアローグ
- 「書き出す」釦
- 押下
- 書き出し中
- 「書き出したデータ」zipデータ
- 送り先選択
- メールとかメッセージかなあ、あるいは"ファイル"に保存
- ファイル名注意「書き出したデータ.zip」前のがあると置き換える
- 保存しました
- 人型マーク画面「完了」
- 押下
- 「概要」画面
Windows PowerShell
> Expand-Archive .\書き出したデータ.zip展開すると
\書き出したデータ> tree /F フォルダー パスの一覧 …… └─apple_health_export export.xml export_cda.xmlXML データ。
見たいあたり CSV にしましょうか。
export_cda.xml が入力データっぽい、今日はそれを読む。export.xml の方はサイズが大きい量も多く、IPhone で自動収集されるデータ、歩数とか、入ってるみたい。
helth_care_data.rb
require 'rexml/document' REXML::Document.new(ARGF.read) \ .root \ .get_elements('//component') \ .map do |comp| { high: [:attributes, :values], value: [:get_text, :value ], unit: [:get_text, :value ], type: [:get_text, :value ], } \ .map do |key, (method, value)| comp.get_elements("*//#{key}").first.send(method).send(value) end \ .join(',') end \ # .sort \ .join("\n") \ .displayXML項目の説明は特にしないが、日付 observation/effectiveTime/high は属性値に値があるので #attributes.values で値を取る、そうすると配列になるのだが、属性が一つしかないのでまあ何とかなる。
>ruby helth_care_data.rb 書き出したデータ\apple_health_export\export_cda.xmlこんな感じかな。
コメント
コメントを投稿