การออกกำลังกาย - รูปแบบการส่งออก JSON
เอกสารโครงสร้างการออกกำลังกายในการส่งออก JSON
อัปเดตล่าสุด: 31 ตุลาคม 2569
ในหน้านี้
การส่งออก 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): ค่า metabolic equivalent of task (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" (ฟาเรนไฮต์) หรือ "degC" (เซลเซียส)
ฟิลด์เฉพาะการว่ายน้ำ
{
"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"
}
]
}