注意:API 即将进行重大更改,需要进行迁移工作。请时常关注我们即将发布的版本页面和弃用时间表,了解最新动态。您还可以注册加入我们的邮寄名单,以便接收最新动态。

更新食品菜单

食品菜单添加到商家信息之后,客户就能知道餐馆的菜品选项,还可以获得菜品的更多相关信息。

要更新商家信息中的“食品菜单”,请先调用 accounts.locations.getFoodMenus。以下是一个示例请求:

GET
https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/foodMenus

响应包含商家信息中当前 FoodMenus 的 JSON 表示法。根据需要修改 FoodMenus 对象并调用 accounts.locations.updateFoodMenus。如需了解详情,请参阅上传或更换食品菜单

您可以使用 GMB API 更新以下字段:

字段
名称

必填

菜品的名称,例如 Hamburger

价格

必填

菜品的价格。

价格币种

必填

菜品标价中所用的币种,例如 U.S. dollar

菜品说明

可选

菜品的简要说明。

菜单部分

可选

菜品的合理组合,例如 BreakfastHamburger-Fries combo.

营养

可选(推荐)

营养信息,例如 Total Fat=3g

可供用餐人数

可选

菜品可供几人食用。

分量大小

可选

菜品的分量。例如:8-piece of nuggets

烹饪方法

可选

菜品的具体烹饪方法。

烹饪风格

可选(推荐)

菜品的具体烹饪风格。

辣度

可选

菜品的辣度,例如 nonemildmediumhot

过敏原

可选(推荐)

菜品中的食品过敏原,例如 dairyeggfishpeanutshellfishsoytree nutwheat

饮食

可选(推荐)

菜品的饮食限制信息,例如 halalkosherorganicveganvegetariangluten free

菜品类型

可选

菜品可选类型,例如泰式 chicken 炒河粉和泰式 veggie 炒河粉。

菜品照片

可选

特定菜品的照片。

上传或更换食品菜单

并非所有营业地点都符合上传食品菜单的条件。

如需确定营业地点是否符合条件,请调用 accounts.locations.get 以查看 locationState。如果 canHaveFoodMenus 设为 true,您就可以上传食品菜单。

如果您的营业地点符合条件,请对 accounts.locations.updateFoodMenus 执行 PATCH 调用。

以下是一个包含所有可选字段的示例请求:

PATCH
https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/foodMenus

{
   "menus": [
       {
           "cuisines": [
                "AMERICAN"
            ],
           "labels": [
               {
                   "displayName": "Menu",
                   "description": "Main Menu of my Restaurant",
                   "languageCode": "en"
               }
           ],
           "sections": [
               {
                   "labels": {
                       "displayName": "Main Dishes",
                       "languageCode": "en"
                   },
                   "items": [
                       {
                           "labels": {
                               "displayName": "Dish1",
                               "description": "Dish1 - our original dish!",
                               "languageCode": "en"
                           },
                           "attributes": {
                               "price": {
                                   "currencyCode": "USD",
                                   "units": 20
                               },
                               "dietaryRestriction": "ORGANIC",
                               "nutritionFacts": {
                                   "calories": {
                                       "lowerAmount": 400,
                                       "upperAmount": 500,
                                       "unit": "CALORIE"
                                   },
                                   "totalFat": {
                                       "lowerAmount": 95,
                                       "upperAmount": 110,
                                       "unit": "GRAM"
                                   },
                                   "cholesterol": {
                                       "lowerAmount": 100,
                                       "upperAmount": 120,
                                       "unit": "MILLIGRAM"
                                   },
                                   "sodium": {
                                       "lowerAmount": 30,
                                       "upperAmount": 45,
                                       "unit": "MILLIGRAM"
                                   },
                                   "totalCarbohydrate": {
                                       "lowerAmount": 78,
                                       "upperAmount": 92,
                                       "unit": "MILLIGRAM"
                                   },
                                   "protein": {
                                       "lowerAmount": 25,
                                       "upperAmount": 35,
                                       "unit":"MILLIGRAM"
                                   }
                               },
                               "ingredients": [
                                   {
                                       "labels": [
                                           {
                                               "displayName": "Ingredient 1",
                                               "description": "Description for ingredient 1",
                                               "languageCode": "en"
                                           },
                                           {
                                               "displayName": "Ingredient 2",
                                               "languageCode": "en"
                                           }
                                       ]
                                   }
                               ],
                               "servesNumPeople": 1,
                               "preparationMethods": [
                                   "BAKED",
                                   "BOILED",
                                   "FRIED"
                               ],
                               "portionSize": {
                                   "quantity": 2,
                                   "unit": {
                                       "displayName": "Pieces",
                                       "languageCode": "en"
                                   }
                               },
                               "mediaKeys": [
                                   "AF1QipP_VOlJzXs2aOJ31234565cb2KPrvN"
                               ]
                           },
                           "options": [
                               {
                                   "labels":
                                       {
                                           "displayName": "Dish1 - spicy",
                                           "description": "Dish1 - a spicy version of our dish!",
                                           "languageCode": "en"
                                       },
                                   "attributes": {
                                       "price": {
                                           "currencyCode": "USD",
                                           "units": 20
                                       }
                                   }
                               },
                               {
                                   "labels":
                                       {
                                           "displayName": "Dish1 - mild",
                                           "description": "Dish1 - a mild spiciness version of our dish!",
                                           "languageCode": "en"
                                       },
                                   "attributes": {
                                       "price": {
                                           "currencyCode": "USD",
                                           "units": 20
                                       }
                                   }
                               }
                           ]
                       }
                   ]
               },
               {
                   "labels": {
                       "displayName": "Desserts",
                       "languageCode": "en"
                   },
                   "items": [
                       {
                           "labels": {
                               "displayName": "Ice Cream",
                               "description": "2 scoops of delicious ice cream!",
                               "languageCode": "en"
                           },
                           "attributes": {
                               "price": {
                                   "currencyCode": "USD",
                                   "units": 20
                               }
                           }
                       }
                   ]
               }
           ]
       }
   ]
}

将照片与菜品相关联

要将照片与菜品相关联,您必须先将照片上传到 GMB 营业地点。

要检索照片,请调用 accounts.locations.media.list。以下是一个示例请求:

GET
https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/media/

响应包含商家信息上每张图片的 MediaKey,如以下示例所示:

{
 "mediaItems": [
   {
     "name": "accounts/{accountId}/locations/{locationId}/media/{mediaKey}",
     "mediaFormat": "PHOTO",
     "locationAssociation": {
       "category": "FOOD_AND_MENU"
     },
 …
}

要将照片与菜品相关联,请获取该照片的 mediaKey 并在 FoodMenuItemAttributes 对象中提供它。您可以提供多个 mediaKeys。如需了解详情,请参阅上传或更换食品菜单