事件类型

本页面介绍了 eventType 属性以及事件类型的规范 。

借助 Google 日历,用户可以创建通用活动,以及专为特定用例设计且具有自定义属性的活动。

您可以在以下 API 位置找到该事件类型:

  • 所有事件都会通过 eventType 返回。
  • 创建或更新活动资源时,需要设置 eventType。如果未设置, 将使用 'default' 类型。
  • eventTypes 可在 Events:list 中指定 来列出特定类型的事件。如果未指定任何类型,则所有事件类型 返回内容。
  • 您可以在 Events:watch 调用中指定 eventTypes,以订阅特定类型事件的更新。如果无任何类型 则该请求会导致订阅所有事件类型。

默认事件

系统会创建 default 事件类型的活动,并将其用作 Google Calendar API 的主要资源之一。它们支持各种属性,可用于进一步自定义事件。

请参阅 创建事件以开始处理 Google 日历活动。

生日

生日是每年重复的全天特殊活动。

Google 日历 API 允许使用插入方法创建生日活动,具体规范如下:

  • eventType 已设为 'birthday'
  • startend 字段需要定义 全天活动(仅持续一天)。
  • visibility 字段值必须为 'private'
  • transparency 字段值必须为 'transparent'
  • 需要设置为每年重复,这意味着 recurrence 字段必须为 'RRULE:FREQ=YEARLY'。日期为 2 月 29 日的生日活动必须包含 以下重复规则: 'RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=-1'
  • 可以有 colorIdsummaryreminders
  • 不能包含任何其他事件属性。

借助此 API,您可以使用 updatepatch 方法更新生日活动的 colorIdsummaryreminders。您还可以更新 startend 字段以更改活动日期。在这种情况下,新值需要定义一个时长恰好为一天的全天活动。

如果请求以不受支持的方式创建或更新出生日期, 失败。在这种情况下,请检查错误消息以确定问题所在。

该 API 支持import操作 用于生日活动不过,该事件将作为默认事件导入。换句话说,eventType 将为 'default'

该 API 支持 getinstances和 用于读取生日信息的 list 方法 事件。eventTypes 可设置为 'birthday',以便仅列出生日活动。如果未指定任何类型 生日会在所有其他活动类型旁边列出。

该 API 支持 watch 方法,用于订阅 Google 日历上的生日活动的更改。eventTypes 可设置为 'birthday',以订阅有关生日活动的最新动态。如果无任何类型 则其将订阅所有事件类型,包括生日。

您可以使用 Google Calendar API 的 delete 方法删除生日活动。

使用以下应用更改生日活动的组织者: move 或 不支持 update 方法。

来自 Gmail 的活动

从 Gmail 自动生成的活动 事件类型为 'fromGmail'

Google 日历 API 不允许使用 insert 方法。

该 API 允许使用 updatepatch 方法更新 colorIdremindersvisibilitytransparencystatusattendeesprivateshared 扩展属性。

该 API 支持 getlist 方法,用于从 Gmail。eventTypes 可以是 设置为 'fromGmail',则仅列出 Gmail 生成的活动。如果无任何类型 则来自 Gmail 的活动将与所有其他事件类型一起列出。

该 API 支持 watch 方法 在 Google 日历上订阅来自 Gmail 的活动的更改。如果无任何类型 则系统将订阅包括 'fromGmail' 在内的所有事件类型。

您可以使用 Google 日历 API 的 delete 方法删除 Gmail 中的活动。

不支持使用 moveupdate 方法通过 Gmail 更改活动的组织者。

专注时间、不在办公室状态和工作地点

Google 日历 API 可用于创建和管理显示 Google 日历用户的状态。

这些功能仅适用于主日历,并且仅面向部分 Google 日历用户提供。如需了解详情,请参阅管理专注时间、外出和工作地点事件

探索 Google Apps 脚本中的事件类型

Google Apps 脚本是一种基于 JavaScript 的云 它可让您构建业务应用,以便与 Google Workspace。脚本是在基于浏览器的代码编辑器中开发的, 它们在 Google 的服务器上存储并运行。另请参阅 Google Apps 脚本 快速入门以开始使用 用于向 Google 日历 API 发送请求的 Apps 脚本。

以下说明介绍了如何在 Google Apps 脚本中将 Google 日历 API 用作高级服务来读取和管理事件。如需查看 Google 日历 API 资源和方法的完整列表, 请参阅参考文档

创建和设置脚本

  1. 依次转至 script.google.com/create.
  2. 在左侧窗格中的服务旁边,点击“添加服务”
  3. 选择 Google Calendar API,然后点击添加
  4. 启用后,该 API 会显示在左侧窗格中。可用的方法和 可以使用编辑器中的 日历 关键字列出 API 中的类。

(可选)更新 Google Cloud 项目

每个 Google Apps 脚本项目都有一个关联的 Google Cloud 项目。您的脚本可以使用 Google Apps 脚本自动创建的默认项目。如果您想使用自定义 Google Cloud 项目,请参阅切换到其他标准 Cloud 项目。设置 Google Cloud 项目后,选择左侧的编辑器 以返回代码编辑器。

向脚本添加代码

以下代码示例展示了如何列出、读取和创建事件: 不同的 eventType 值。

  1. 将以下内容粘贴到代码编辑器中。

    const CALENDAR_ID = 'CALENDAR_ID' || 'primary';
    
    /** Lists default events. */
    function listDefaultEvents() {
      listEvents('default');
    }
    
    /** Lists birthday events. */
    function listBirthdays() {
      listEvents('birthday');
    }
    
    /** Lists events from Gmail. */
    function listEventsFromGmail() {
      listEvents('fromGmail');
    }
    
    /**
      * Lists events with the given event type. If no type is specified, lists all events.
      * See https://developers.google.com/calendar/api/v3/reference/events/list
      */
    function listEvents(eventType = undefined) {
      // Query parameters for the list request.
      const optionalArgs = {
        eventTypes: eventType ? [eventType] : undefined,
        singleEvents: true,
        timeMax: '2024-07-30T00:00:00+01:00',
        timeMin: '2024-07-29T00:00:00+01:00',
      }
      try {
        var response = Calendar.Events.list(CALENDAR_ID, optionalArgs);
        response.items.forEach(event => console.log(event));
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Reads the event with the given eventId.
      * See https://developers.google.com/calendar/api/v3/reference/events/get
      */
    function readEvent() {
      try {
        var response = Calendar.Events.get(CALENDAR_ID, 'EVENT_ID');
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /** Creates a default event. */
    function createDefaultEvent() {
      const event = {
        start: { dateTime: '2024-07-30T10:30:00+01:00'},
        end: { dateTime: '2024-07-30T12:30:00+01:00'},
        description: 'Created from Apps Script.',
        eventType: 'default',
        summary: 'Sample event',
      }
      createEvent(event);
    }
    
    /** Creates a birthday event. */
    function createBirthday() {
      const event = {
        start: { date: '2024-01-29' },
        end: { date: '2024-01-30' },
        eventType: 'birthday',
        recurrence: ["RRULE:FREQ=YEARLY"],
        summary: "My friend's birthday",
        transparency: "transparent",
        visibility: "private",
      }
      createEvent(event);
    }
    
    /**
      * Creates a Calendar event.
      * See https://developers.google.com/calendar/api/v3/reference/events/insert
      */
    function createEvent(event) {
    
      try {
        var response = Calendar.Events.insert(event, CALENDAR_ID);
        console.log(response);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    

    替换以下内容:

    • CALENDAR_ID:要检索和创建活动的日历的电子邮件地址。该常量最初设置为 'primary',这是一个关键字,可用于访问 。更改此值后,您可以读取以下日历中的活动: 您有权访问的其他用户
    • EVENT_ID:事件的 ID。您可以调用 Events:list 来检索事件 ID。

运行代码示例

  1. 在代码编辑器上方,从下拉菜单中选择要运行的函数, 然后点击运行
  2. 首次执行时,系统会提示您授予访问权限。查看并允许 使用 Apps 脚本访问您的日历。
  3. 您可以在窗口底部显示的执行日志中检查脚本执行结果。