扩展属性

活动资源的各个字段 涵盖与广告系列相关的最常见数据 事件(如位置、开始时间等),但应用可能希望存储 特定于其应用场景的其他元数据日历 API 提供 可使用名为 扩展属性。 扩展的属性便于存储活动的应用程序专用数据 而无需使用外部数据库。

公开范围

可用的扩展属性有两种:私有和共享。 活动的所有参加者都可以查看和编辑共享属性,而 私有属性设置在一个与会者的本地“副本”上,事件。更多 具体而言,私有属性特定于 calendarIdeventId 而要显示共享属性,则无论 请求中使用了 calendarId

添加和更新属性

扩展属性在 Events 资源上设置,并且与其他字段一样, 在 insert 中设置, updatepatch 请求。 使用补丁请求是首选 方法,因为它允许您处理一些属性,同时保留其他属性。 不受影响。添加具有相同键的新属性会覆盖任何现有属性 具有相同键的属性。以下示例展示了如何将 属性:

PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
  "extendedProperties": {
    "private": {
      "petsAllowed": "yes"
    }
  }
}

删除属性

任何未包含在更新请求中的属性都将被删除,但最好 方法是发出补丁请求以将值设置为 null。以下 示例显示了删除私有属性:

PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
  "extendedProperties": {
    "private": {
      "petsAllowed": null
    }
  }
}

搜索房源

您可以使用 Events.list 请求。 设置字段 privateExtendedPropertysharedExtendedProperty propertyName=value 格式的限制条件, 分别针对私有资源和共享资源进行搜索。以下 示例会返回具有私有属性 petsAllowed=yes 的事件:

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes

您可以多次重复这些字段,约束条件为 OR 关系 因此,事件只需匹配要返回的某个约束条件即可。 以下示例查找具有私有属性的事件 petsAllowed=yesisOutside=yes

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes
    &privateExtendedProperty=isOutside%3Dyes

请注意,私有属性和共享属性的约束条件之间是 AND 关系 不过,事件必须同时符合这两组约束条件才会被返回。 以下示例查找具有私有属性 petsAllowed=yes 的事件 以及公共属性 createdBy=myApp

GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events
    ?privateExtendedProperty=petsAllowed%3Dyes
    &sharedExtendedProperty=createdBy%3DmyApp

限制

  1. 属性的键不得超过 44 个字符, 较长的键会被静默地丢弃。
  2. 属性值的大小上限为 1024 个字符, 将被自动截断。
  3. 一个事件最多可以包含 300 个媒体资源,总大小不超过 32kB (键大小 + 值大小)。这 300 个房源包括共享和私人 属性,在所有“副本”中事件。