applehealthdata.pyを実行した際の「’xml.etree.ElementTree.Element’ object has no attribute ‘getchildren’」エラー解決方法

iPhoneのヘルスケアアプリで歩数を自動記録しているので、そのデータをパソコンで分析(1日の平均歩数の変化など)したいと思い、パソコンへ移動させることにしました。

ヘルスケアアプリからデータをエクスポートするには、

ヘルスケアアプリを起動し、右上の人物マークをタップし、一番下の「すべてのヘルスケアデータを書き出す」からできます。

1分くらい時間がかかりますが、データが書き出されるので、任意の場所に保存します。

自分の場合はAirDropでMacに移動させました。

データは以下の2つ

  • export.xml
  • export_cda.xml

がありますが、export.xmlを利用します。

このファイルを起動するとデータが入っているのですが、非常に膨大なxmlファイルです。

このファイルを見やすくするPythonファイルとして、applehealthdata.pyがあります。

そのファイルは、以下のページの緑のCodeボタンからzip形式でダウンロードできます。

ダウンロードページ GitHub – tdda/applehealthdata: Extract Data from Apple Health App’s XML Export

ダウンロードしたら解凍し、

  • applehealthdata.py
  • export.xml

この2つのファイルを同じ階層に入れます。

そしてターミナルを起動し、applehealthdata.pyがある階層へ行き、こちらのコマンド

python3 applehealthdata.py export.xml

を実行すると、各データごとにcsvファイルを書き出してくれる、はずでした。

ところが、ファイルを実行すると、以下のようなエラーメッセージが出ました。

AttributeError: ‘xml.etree.ElementTree.Element’ object has no attribute ‘getchildren’

‘xml.etree.ElementTree.Element’について調べてみたところ、

Python 3.9から、xml.etree.ElementTree.Element.getchildren()はなくなり、list(elem)に置き換わったようです。

参考 ⚓ T213814 xml.etree.ElementTree.Element.getchildren() has been removed in Python 3.9 –

そこで、エラーが出た部分のコード

self.nodes = self.root.getchildren()

これを、以下のように修正すると、うまく動きました。

self.nodes = list(self.root)

自分の場合は、

  • ActiveEnergyBurned.csv
  • BodyMass.csv
  • DistanceWalkingRunning.csv
  • FlightsClibbed.csv
  • HeartRate.csv
  • SleepAnalysis.csv
  • StepCount.csv

が出力されました。人によって出力されるデータは異なるかと思います。

今回は歩数計のデータを見たかったので、StepCount.csvを見れば良いですね。

コメント

タイトルとURLをコピーしました