事件类型

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

Google 日历允许用户创建一般活动,以及 专为特定用例而设计,并具有自定义属性。

事件类型可在 API 中的以下位置发现:

  • 所有事件都会随 eventType 返回。
  • eventType 需要设置此字段。如果未设置, 将使用 'default' 类型。
  • eventTypes 可在 Events:list 中指定 来列出特定类型的事件。如果未指定任何类型,则所有事件类型 返回内容。
  • eventTypes 可在 Events:watch 中指定 调用来订阅特定类型的事件的最新动态。如果没有 则该请求会导致订阅所有事件类型。

默认事件

系统会创建类型为“default”的事件,并将其用作主要事件 Google 日历 API 资源。它们支持多种 属性 可用于进一步自定义该事件

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

生日

<ph type="x-smartling-placeholder">

生日是特殊的全天活动,每年重复一次。他们拥有 以下规范:

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

来自 Gmail 的活动

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

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

该 API 允许更新 colorId, reminders, visibility, transparency, status, privateshared 使用更新的扩展属性 和 patch 方法。

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

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

您可以使用 delete 方法的 Google 日历 API。

使用以下方法在 Gmail 中更改活动的组织者: move 或 不支持 update 方法。

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

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

这些功能仅适用于主日历,部分产品 Google 日历用户。请参阅管理专注时间、不在办公室状态和工作状态 地理位置事件

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

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

以下说明介绍了如何使用 Google 日历 API 是 Google Cloud 中的一项高级服务, Google Apps 脚本。如需查看 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 项目后,选择左侧的 Editor 以返回到 代码编辑器。

向脚本添加代码

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

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

    const CALENDAR_ID = 'CALENDAR_ID' || 'primary';
    
    /** Lists default events. */
    function listDefaultEvents() {
      listEvents('default');
    }
    
    /** 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 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. 您可以在 窗口底部显示的 Execution Log