Skip to content

Instantly share code, notes, and snippets.

@jmoreno
Created November 5, 2016 20:43
Show Gist options
  • Select an option

  • Save jmoreno/4d47d5160f861ef6b7d01449ea28aee0 to your computer and use it in GitHub Desktop.

Select an option

Save jmoreno/4d47d5160f861ef6b7d01449ea28aee0 to your computer and use it in GitHub Desktop.
require 'nokogiri'
require 'axlsx'
doc = File.open("exportación.xml") {|f| Nokogiri::XML(f)}
apple_health_export_xlsx = Axlsx::Package.new
apple_health_export_xlsx.workbook.add_worksheet(:name => "HealthData") do |sheet|
sheet.add_row ["Locale"]
doc.css("HealthData").each do |healthData|
sheet.add_row [healthData["locale"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "ExportDate") do |sheet|
sheet.add_row ["value"]
doc.css("HealthData ExportDate").each do |exportDate|
sheet.add_row [exportDate["value"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "Me") do |sheet|
sheet.add_row ["HKCharacteristicTypeIdentifierDateOfBirth", "HKCharacteristicTypeIdentifierBiologicalSex", "HKCharacteristicTypeIdentifierBloodType", "HKCharacteristicTypeIdentifierFitzpatrickSkinType"]
doc.css("HealthData Me").each do |me|
sheet.add_row [me["HKCharacteristicTypeIdentifierDateOfBirth"], me["HKCharacteristicTypeIdentifierBiologicalSex"], me["HKCharacteristicTypeIdentifierBloodType"], me["HKCharacteristicTypeIdentifierFitzpatrickSkinType"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "Record") do |sheet|
sheet.add_row ["type", "unit", "value", "sourceName", "sourceVersion", "device", "creationDate", "startDate", "endDate"]
doc.css("HealthData Record").each do |record|
sheet.add_row [record["type"], record["unit"], record["value"], record["sourceName"], record["sourceVersion"], record["device"], record["creationDate"], record["startDate"], record["endDate"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "Correlation") do |sheet|
sheet.add_row ["type", "sourceName", "sourceVersion", "device", "creationDate", "startDate", "endDate"]
doc.css("HealthData Correlation").each do |correlation|
sheet.add_row [correlation["type"], correlation["sourceName"], correlation["sourceVersion"], correlation["device"], correlation["creationDate"], correlation["startDate"], correlation["endDate"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "Workout") do |sheet|
sheet.add_row ["workoutActivityType", "duration", "durationUnit", "totalDistance", "totalDistanceUnit", "totalEnergyBurned", "totalEnergyBurnedUnit", "sourceName", "sourceVersion", "device", "creationDate", "startDate", "endDate"]
doc.css("HealthData Workout").each do |workout|
sheet.add_row [workout["workoutActivityType"], workout["duration"], workout["durationUnit"], workout["totalDistance"], workout["totalDistanceUnit"], workout["totalEnergyBurned"], workout["totalEnergyBurnedUnit"], workout["sourceName"], workout["sourceVersion"], workout["device"], workout["creationDate"], workout["startDate"], workout["endDate"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "WorkoutEvent") do |sheet|
sheet.add_row ["type", "date"]
doc.css("HealthData WorkoutEvent").each do |workoutEvent|
sheet.add_row [workoutEvent["type"], workoutEvent["date"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "ActivitySummary") do |sheet|
sheet.add_row ["dateComponents", "activeEnergyBurned", "activeEnergyBurnedGoal", "activeEnergyBurnedUnit", "appleExerciseTime", "appleExerciseTimeGoal", "appleStandHours", "appleStandHoursGoal"]
doc.css("HealthData ActivitySummary").each do |activitySummary|
sheet.add_row [activitySummary["dateComponents"], activitySummary["activeEnergyBurned"], activitySummary["activeEnergyBurnedGoal"], activitySummary["activeEnergyBurnedUnit"], activitySummary["appleExerciseTime"], activitySummary["appleExerciseTimeGoal"], activitySummary["appleStandHours"], activitySummary["appleStandHoursGoal"]]
end
end
apple_health_export_xlsx.workbook.add_worksheet(:name => "MetadataEntry") do |sheet|
sheet.add_row ["key", "value"]
doc.css("HealthData MetadataEntry").each do |metadataEntry|
sheet.add_row [metadataEntry["key"], metadataEntry["value"]]
end
end
apple_health_export_xlsx.use_shared_strings = true
apple_health_export_xlsx.serialize('HealthData.xlsx')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment