ศูนย์ช่วยเหลือ HealthyApps
ไทย
ศูนย์ช่วยเหลือ
เว็บไซต์หลัก ↗

ค้นหาหัวข้อช่วยเหลือ

การออกกำลังกาย - รูปแบบการส่งออก JSON

เอกสารโครงสร้างการออกกำลังกายในการส่งออก JSON

อัปเดตล่าสุด: 31 ตุลาคม 2569

ในหน้านี้
เวอร์ชันการส่งออก
การออกกำลังกายเวอร์ชัน 2 การออกกำลังกายเวอร์ชัน 2 โครงสร้างพื้นฐานฟิลด์ที่จำเป็นฟิลด์ที่ไม่บังคับการจัดกลุ่มเวลาเมตริกการออกกำลังกาย
การออกกำลังกายเวอร์ชัน 1 (แบบเดิม) การออกกำลังกายเวอร์ชัน 1 (แบบเดิม) โครงสร้างเวอร์ชัน 1
เอกสารที่เกี่ยวข้อง

การส่งออก 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 Z
  • end (Date): เวลาสิ้นสุดการออกกำลังกายในรูปแบบ yyyy-MM-dd HH:mm:ss Z
  • duration (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): พิกัดละติจูด GPS
  • longitude (Number): พิกัดลองจิจูด GPS
  • altitude (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"
    }
  ]
}

เอกสารที่เกี่ยวข้อง