營養資料類型

Google Health API 提供資料類型,可追蹤使用者的食物攝取量和營養資訊。你可以使用這些類型記錄餐點、從食物資料庫參照食物,以及追蹤營養素含量。

支援的資料類型

表格:Google Health API 營養資料類型
資料類型
  dataType
  filter 參數
記錄
類型
可用的
作業
範圍 Webhook
支援
支援真正的零
美食
  food
  food
食物 list、get .nutrition.readonly
.nutrition.writeonly
食物測量單位
  food-measurement-unit
  food_measurement_unit
食物 list、get .nutrition.readonly
.nutrition.writeonly
營養記錄
  nutrition-log
  nutrition_log
範例 list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .nutrition.readonly
.nutrition.writeonly

營養記錄

營養記錄代表使用者記錄的食物。視食物類型而定,建立營養記錄的方式有兩種:

  1. 已識別的食物:將 food 欄位設為參照現有的「Food」資源。系統會根據參照的食物,自動填入 nutrientsenergyenergyFromFattotalCarbohydratetotalFatfoodDisplayName 欄位。(建議做法)。

  2. 匿名食物:手動設定 foodDisplayName 欄位,並提供 nutrientsenergyenergyFromFattotalCarbohydratetotalFat 的值。以匿名食物建立的營養記錄檔無法編輯。

建立含有匿名食物的營養記錄

如要建立營養記錄項目,請將 POST 要求傳送至 nutrition-log 資料點端點。

要求

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T18:00:00Z",
      "endTime": "2026-06-16T18:30:00Z"
    },
    "foodDisplayName": "Grilled Chicken Breast",
    "mealType": "DINNER",
    "energy": {
      "kcal": 165
    },
    "totalCarbohydrate": {
      "grams": 0
    },
    "totalFat": {
      "grams": 3.6
    },
    "nutrients": [
      {
        "nutrient": "PROTEIN",
        "quantity": {
          "grams": 31
        }
      },
      {
        "nutrient": "SODIUM",
        "quantity": {
          "grams": 0.074
        }
      }
    ],
    "serving": {
      "amount": 1.0
    }
  }
}

回應

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "nutritionLog": {
      "interval": {
        "startTime": "2026-06-16T18:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T18:30:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18,
            "minutes": 30
          }
        }
      },
      "energy": {
        "kcal": 165
      },
      "totalCarbohydrate": {
        "grams": 0
      },
      "totalFat": {
        "grams": 3.6
      },
      "nutrients": [
        {
          "quantity": {
            "grams": 31
          },
          "nutrient": "PROTEIN"
        },
        {
          "quantity": {
            "grams": 0.074
          },
          "nutrient": "SODIUM"
        }
      ],
      "mealType": "DINNER",
      "serving": {
        "amount": 1
      },
      "foodDisplayName": "Grilled Chicken Breast"
    }
  }
}

建立含有已識別食物的營養記錄

如要從食物資料庫記錄食物項目,請將 food 欄位設為參照 Food 資源。API 會自動填入營養欄位。

要求:

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T12:00:00Z",
      "endTime": "2026-06-16T12:30:00Z"
    },
    "food": "users/me/dataTypes/food/dataPoints/food-id",
    "mealType": "LUNCH",
    "serving": {
      "amount": 1.0
    }
  }
}

刪除營養記錄

如要刪除一或多個營養記錄項目,請將 POST 要求傳送至 batchDelete 端點,並提供要移除的項目資源名稱。

要求:

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/nutrition-log/dataPoints/data-point-id"
  ]
}

NutritionLog 欄位

如需欄位和說明完整清單,請參閱參考文件

EnergyQuantity

代表以千卡 (kcal) 為單位的能量測量值。詳情請參閱 EnergyQuantity

{
  "kcal": 165
}

WeightQuantity

代表以公克為單位的重量測量值。詳情請參閱「WeightQuantity」。

{
  "grams": 27.3
}

NutrientQuantity

代表特定營養素及其測量量。詳情請參閱「NutrientQuantity」。

{
  "nutrient": "PROTEIN",
  "quantity": {
    "grams": 31
  }
}

營養素值

如需支援的營養素類型完整清單,請參閱「營養素」。

供應

代表營養記錄項目的份量資訊。詳情請參閱「放送」。

{
  "amount": 1.5
}

MealType 值

如需支援的餐點類型完整清單,請參閱「MealType」。

食物

「食物」是唯讀資料類型,代表食物資料庫中的食物項目。使用 listget 作業瀏覽可用的食物,並擷取營養資訊。

列出食物

如要列出食品,請將 GET 要求傳送至 food 資料點端點:

GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints
Authorization: Bearer access-token
Accept: application/json

食品測量單位

「食物測量單位」是唯讀資料型別,代表食物份量使用的測量單位 (例如「杯」、「湯匙」或「塊」)。

列出可用的測量單位

如要列出可用的測量單位:

GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints
Authorization: Bearer access-token
Accept: application/json

規範

  • 盡可能使用系統辨識的食物。API 會自動填入營養欄位,減少錯誤並確保與食物資料庫一致。
  • 以匿名食物建立的營養記錄無法更新。 如要修正匿名記錄,請刪除並重新建立。
  • nutrients 陣列中的所有營養素數量都以公克為測量單位。
  • energy」和「energyFromFat」欄位會使用千卡 (kcal) 做為測量單位。