Προπονήσεις - Μορφή εξαγωγής JSON
Τεκμηρίωση για τη δομή προπονήσεων σε εξαγωγές JSON
Τελευταία ενημέρωση: 31 Οκτωβρίου 2026
Σε αυτή τη σελίδα
Οι εξαγωγές JSON αποθηκεύουν τις προπονήσεις στον πίνακα workouts.
Εκδόσεις εξαγωγής
Το Health Auto Export υποστηρίζει δύο εκδόσεις εξαγωγής προπονήσεων:
- Έκδοση 2 (Συνιστάται): Ενισχυμένη μορφή με πιο λεπτομερή μεταδεδομένα και δομημένα δεδομένα
- Έκδοση 1 (Παλαιού τύπου): Παλαιότερη μορφή που διατηρείται για συμβατότητα με υπάρχουσες ροές εργασίας
Προπονήσεις Έκδοσης 2
Η Έκδοση 2 περιλαμβάνει τα ακόλουθα υποχρεωτικά πεδία και προαιρετικά δεδομένα. Τα παραδείγματα χρησιμοποιούν το Τοπικοποίηση μονάδων ανενεργό· η ενεργοποίησή του μπορεί να αλλάξει τις ετικέτες μονάδων στις σειρές μετρήσεων.
Βασική δομή
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"duration": 1800
}
Υποχρεωτικά πεδία
id(String): Μοναδικό αναγνωριστικό της προπόνησηςname(String): Όνομα τύπου προπόνησης (π.χ. "Running", "Cycling", "Swimming")start(Date): Ώρα έναρξης προπόνησης σε μορφήyyyy-MM-dd HH:mm:ss Zend(Date): Ώρα λήξης προπόνησης σε μορφήyyyy-MM-dd HH:mm:ss Zduration(Number): Διάρκεια προπόνησης σε δευτερόλεπτα
Προαιρετικά πεδία
Τα προαιρετικά πεδία εξαρτώνται από τα διαθέσιμα δεδομένα και τις επιλογές εξαγωγής σας:
Πηγή καταγραφής
{
"source": {
"name": "Workout App",
"identifier": "com.example.workouts"
}
}
source(Object): Η εφαρμογή ή η συσκευή που κατέγραψε την προπόνηση, με το όνομά της και το αναγνωριστικό εφαρμογής. Οι μεμονωμένες αναγνώσεις μετρήσεων έχουν ξεχωριστές συμβολοσειρές πηγής και μπορεί να προέρχονται από άλλη εφαρμογή ή συσκευή.
Πληροφορίες τοποθεσίας
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Μία από τις"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Αν η προπόνηση πραγματοποιήθηκε σε εσωτερικό χώρο
Ενέργεια και ένταση
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "kcal/hr\u00b7kg"
}
}
activeEnergyBurned(Object): Ενεργές θερμίδες που καταναλώθηκαν κατά την προπόνησηtotalEnergy(Object): Συνολικές θερμίδες (ενεργές + ηρεμίας) που καταναλώθηκανintensity(Object): Τιμή μεταβολικού ισοδυνάμου εργασίας (MET)
Απόσταση και ταχύτητα
{
"distance": {
"qty": 3.5,
"units": "mi"
}
}
distance(Object): Συνολική καλυφθείσα απόστασηspeed(Object): Μέση ταχύτητα υπολογισμένη από απόσταση και διάρκειαavgSpeed(Object): Μέση ταχύτητα καθ’ όλη τη διάρκεια της προπόνησηςmaxSpeed(Object): Μέγιστη ταχύτητα που επιτεύχθηκε
Κάθε αντικείμενο περιλαμβάνει qty και units.
Υψόμετρο
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Συνολική ανάβαση υψομέτρουelevationDown(Object): Συνολική κατάβαση υψομέτρου
Μονάδες: "ft" (πόδια) ή "m" (μέτρα)
Περιβαλλοντικά δεδομένα
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Θερμοκρασία περιβάλλοντος κατά την προπόνησηhumidity(Object): Σχετική υγρασία σε ποσοστό
Μονάδες θερμοκρασίας: "degF" (Fahrenheit) ή "degC" (Celsius)
Πεδία ειδικά για κολύμβηση
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "count/min"
}
}
lapLength(Object): Μήκος κάθε γύρουstrokeStyle(String): Μία από τις:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Βαθμολογία αποδοτικότητας κολύμβησηςsalinity(String):"Fresh Water"ή"Salt Water"totalSwimmingStrokeCount(Object): Συνολικός αριθμός κινήσεωνswimCadence(Object): Κινήσεις ανά λεπτό
Δεδομένα βημάτων και ρυθμού
{
"stepCount": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 5000,
"units": "count",
"source": "Apple Watch"
}
],
"stepCadence": {
"qty": 180,
"units": "count/min"
},
"flightsClimbed": {
"qty": 10,
"units": "count"
}
}
stepCount(Array): Πίνακας μετρήσεων βημάτων στο χρόνοstepCadence(Object): Βήματα ανά λεπτόflightsClimbed(Object): Αριθμός ορόφων σκαλών που ανεβήκαν
Δεδομένα καρδιακού ρυθμού
{
"heartRate": {
"min": {
"qty": 120,
"units": "count/min"
},
"avg": {
"qty": 150,
"units": "count/min"
},
"max": {
"qty": 175,
"units": "count/min"
}
},
"maxHeartRate": {
"qty": 175,
"units": "count/min"
},
"avgHeartRate": {
"qty": 150,
"units": "count/min"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"Min": 120,
"Avg": 150,
"Max": 175,
"units": "count/min",
"source": "Apple Watch"
}
],
"heartRateRecovery": [
{
"date": "2024-02-06 07:30:00 -0800",
"Min": 140,
"Avg": 145,
"Max": 150,
"units": "count/min",
"source": "Apple Watch"
}
]
}
heartRate(Object): Σύνοψη με ελάχιστο, μέσο και μέγιστο καρδιακό ρυθμό κατά την προπόνησηmaxHeartRate(Object): Μέγιστος καρδιακός ρυθμός κατά την προπόνησηavgHeartRate(Object): Μέσος καρδιακός ρυθμός κατά την προπόνησηheartRateData(Array): Λεπτομερείς μετρήσεις από την προπόνηση, που τελειώνουν όταν τελειώνει η προπόνησηheartRateRecovery(Array): Ξεχωριστές μετρήσεις από τα δύο λεπτά αμέσως μετά τη λήξη της προπόνησης
Οι συνοπτικοί καρδιακοί ρυθμοί χρησιμοποιούν καταγεγραμμένες τιμές προπόνησης όταν είναι διαθέσιμες, με εναλλακτική τις αναγνώσεις καρδιακού ρυθμού της προπόνησης. Οι εξαγόμενες αναγνώσεις περιλαμβάνουν μετρήσεις που λήφθηκαν κατά τις παύσεις, επομένως οι κορυφές και οι μέσοι όροι τους μπορεί να διαφέρουν από τη σύνοψη.
Πίνακες δεδομένων χρονοσειρών
Πολλές μετρήσεις μπορούν να συμπεριληφθούν ως πίνακες χρονοσειρών όταν είναι ενεργοποιημένο το «Συμπερίληψη μετρήσεων προπόνησης»:
{
"activeEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 50,
"units": "kcal",
"source": "Apple Watch"
}
],
"basalEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "kcal",
"source": "Apple Watch"
}
],
"cyclingCadence": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 90,
"units": "count/min",
"source": "Apple Watch"
}
],
"cyclingDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.5,
"units": "mi",
"source": "Apple Watch"
}
],
"cyclingPower": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 200,
"units": "W",
"source": "Power Meter"
}
],
"cyclingSpeed": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 18,
"units": "mi/hr",
"source": "Apple Watch"
}
],
"swimDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 25,
"units": "yd",
"source": "Apple Watch"
}
],
"swimStroke": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "count",
"source": "Apple Watch"
}
],
"walkingAndRunningDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.25,
"units": "mi",
"source": "Apple Watch"
}
]
}
Δομή QuantityData:
date(Date): Χρονική σήμανση της μέτρησηςqty(Number): Τιμή ποσότηταςunits(String): Μονάδα μέτρησηςsource(String, προαιρετικό): Συσκευή ή εφαρμογή πηγής δεδομένων
Δομή HeartRateData:
date(Date): Χρονική σήμανση της μέτρησηςMin(Number): Ελάχιστος καρδιακός ρυθμόςAvg(Number): Μέσος καρδιακός ρυθμόςMax(Number): Μέγιστος καρδιακός ρυθμόςunits(String): Μονάδα (count/minμε Τοπικοποίηση μονάδων ανενεργή)source(String, προαιρετικό): Συσκευή ή εφαρμογή πηγής δεδομένων
Δεδομένα διαδρομής
Όταν είναι ενεργοποιημένο το «Συμπερίληψη δεδομένων διαδρομής» και η προπόνηση έχει δεδομένα GPS:
{
"route": [
{
"latitude": 37.7749,
"longitude": -122.4194,
"altitude": 50.5,
"course": 45.0,
"courseAccuracy": 5.0,
"horizontalAccuracy": 10.0,
"verticalAccuracy": 15.0,
"timestamp": "2024-02-06 07:00:00 -0800",
"speed": 7.0,
"speedAccuracy": 0.5
}
]
}
Πεδία τοποθεσίας:
latitude(Number): Συντεταγμένη γεωγραφικού πλάτους GPSlongitude(Number): Συντεταγμένη γεωγραφικού μήκους GPSaltitude(Number): Υψόμετρο σε μέτραcourse(Number): Κατεύθυνση κίνησης σε μοίρες (0-360)courseAccuracy(Number): Ακρίβεια μέτρησης πορείας σε μοίρεςhorizontalAccuracy(Number): Οριζόντια ακρίβεια θέσης σε μέτραverticalAccuracy(Number): Κατακόρυφη ακρίβεια θέσης σε μέτραtimestamp(Date): Ώρα καταγραφής της τοποθεσίαςspeed(Number): Ταχύτητα σε μέτρα ανά δευτερόλεπτοspeedAccuracy(Number): Ακρίβεια μέτρησης ταχύτητας σε m/s
Μεταδεδομένα
{
"metadata": {
"customField": {
"label": "value",
"quantity": 123
},
"anotherField": [
1,
2,
3
]
}
}
metadata(Object): Πρόσθετα προσαρμοσμένα μεταδεδομένα που συνδέονται με την προπόνηση
Συμβάντα, δραστηριότητες και διαστήματα
Οι εξαγωγές JSON και Markdown Έκδοσης 2 μπορεί να περιλαμβάνουν events, segments, laps και activities που κατέγραψε η εφαρμογή προπόνησης. Παραμένουν διαθέσιμα όταν το Συμπερίληψη μετρήσεων προπόνησης είναι ανενεργό. Το CSV και το GPX δεν περιλαμβάνουν αυτές τις εγγραφές.
Με το Συμπερίληψη μετρήσεων προπόνησης ενεργό και τις σχετικές μετρήσεις επιλεγμένες, τα διαστήματα μπορεί επίσης να περιλαμβάνουν απόσταση, ενεργή ενέργεια, συνόψεις καρδιακού ρυθμού και ρυθμό ή ταχύτητα ενεργού χρόνου. Οι τιμές διακρίνουν καταγεγραμμένες μετρήσεις από εκτιμήσεις· οι μη διαθέσιμες τιμές παραλείπονται.
Με επιλεγμένη την απόσταση, το splits μπορεί να περιλαμβάνει εκτιμώμενα διαστήματα χιλιομέτρων και μιλίων. Μπορεί να διαφέρουν από τα διαστήματα της εφαρμογής καταγραφής, και το τελευταίο διάστημα σημειώνεται ως μερικό όταν είναι μικρότερο από την απόσταση-στόχο. Ελλείπουσες αναγνώσεις απόστασης ή μη υποστηριζόμενοι τύποι προπόνησης μπορούν να αποτρέψουν τον υπολογισμό διαστημάτων.
Βαθμολογίες προσπάθειας προπόνησης
Οι εξαγωγές JSON και Markdown Έκδοσης 2 μπορούν να περιλαμβάνουν επιλεγμένες τιμές Βαθμολογίας προσπάθειας προπόνησης (effortScore) και Εκτιμώμενης βαθμολογίας προσπάθειας προπόνησης (estimatedEffortScore). Καθεμία είναι αντικείμενο με qty και units: "appleEffortScore".
Οι βαθμολογίες απαιτούν iOS 18 ή νεότερο και πρόσβαση στα αντίστοιχα δεδομένα στο Apple Health. Οι βαθμολογίες ολόκληρης της προπόνησης και δραστηριότητας είναι ξεχωριστές. Είναι ανεξάρτητες από την Ομαδοποίηση χρόνου και το Συμπερίληψη μετρήσεων προπόνησης· το CSV δεν τις περιλαμβάνει.
Στο Περιήγηση → Προπονήσεις, ανοίξτε το φύλλο εξαγωγής της λίστας ή τις ρυθμίσεις εξαγωγής Έκδοσης 2 μιας προπόνησης, μετά χρησιμοποιήστε Επιλογή πεδίων εξαγωγής για να επιλέξετε βαθμολογίες προσπάθειας πριν από την εξαγωγή.
Ομαδοποίηση χρόνου μετρήσεων προπόνησης
Όταν χρησιμοποιείτε Έκδοση εξαγωγής 2 και είναι ενεργοποιημένο το «Συμπερίληψη μετρήσεων προπόνησης», μπορείτε να ελέγχετε τη λεπτομέρεια των δεδομένων χρονοσειρών:
- Λεπτά: Ομαδοποιεί τις μετρήσεις προπόνησης σε λεπτά ρολογιού. Το πρώτο και το τελευταίο λεπτό μπορεί να περιλαμβάνουν λίγα δευτερόλεπτα ακριβώς πριν την έναρξη της προπόνησης ή ακριβώς μετά τη λήξη της.
- Δευτερόλεπτα: Ομαδοποιεί τις μετρήσεις προπόνησης σε δευτερόλεπτα ρολογιού, με κάθε χρονική σήμανση να σηματοδοτεί την έναρξη του δευτερολέπτου της. Το πρώτο και το τελευταίο δευτερόλεπτο μπορεί να περιλαμβάνουν το κλάσμα του δευτερολέπτου ακριβώς έξω από την προπόνηση. Τα αρχεία είναι μεγαλύτερα από την ομαδοποίηση ανά λεπτό.
Η ενεργή και η ηρεμίας ενέργεια χρησιμοποιούν τα ίδια συνδυασμένα σύνολα με άλλες μετρήσεις προπόνησης σε κάθε χρονική ομάδα. Οι αναγνώσεις από περισσότερες από μία συσκευές ή εφαρμογές περιλαμβάνονται μαζί.
Προπονήσεις Έκδοσης 1 (παλαιού τύπου)
Η Έκδοση 1 χρησιμοποιεί απλούστερη δομή. Για νέες εξαγωγές συνιστάται η Έκδοση 2.
Δομή Έκδοσης 1
{
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"activeEnergy": {
"qty": 350,
"units": "kcal"
},
"distance": {
"qty": 3.5,
"units": "mi"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 150,
"units": "bpm"
}
],
"route": [
{
"lat": 37.7749,
"lon": -122.4194,
"altitude": 50.5,
"timestamp": "2024-02-06 07:00:00 -0800"
}
]
}