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") \
.display
XML項目の説明は特にしないが、日付 observation/effectiveTime/high は属性値に値があるので #attributes.values で値を取る、そうすると配列になるのだが、属性が一つしかないのでまあ何とかなる。>ruby helth_care_data.rb 書き出したデータ\apple_health_export\export_cda.xmlこんな感じかな。
コメント
コメントを投稿