事件对象

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

事件对象是 JSON 结构,会自动构造并作为参数传递,以便在用户与插件互动时触发或调用回调函数。事件对象会将有关托管应用和当前上下文的客户端信息传送到插件的服务器端回调函数。

Google Workspace 插件在以下三个位置使用事件对象:

  • 首页触发器。 当首页触发器函数触发时,您定义的每个 homepageTrigger 函数都会自动传递一个事件对象。您可以在首页触发器函数中使用此对象来识别活跃的主机应用、客户端平台、用户语言区域和其他信息。

    首页触发器触发的事件对象不包含其他两种情况下包含的所有字段;与微件和上下文信息相关的字段将被省略。

  • 内容相关触发器。 每个主机应用都提供一组不同的上下文触发器,这些触发器会在用户输入特定上下文时触发。例如,Gmail 会在用户打开邮件时提供上下文触发器,在用户撰写邮件时提供另一个上下文触发器。Google 日历会在用户打开活动时提供上下文触发器。当用户选择云端硬盘文件时,Google 云端硬盘会提供一个上下文触发器。

    当上下文触发器触发时,主机应用会调用插件清单中列出的相应 runFunction,并向其传递事件对象作为参数。上下文触发器触发时创建的事件对象包含首页触发器事件对象中包含的所有字段,以及包含上下文信息的字段。

  • 微件操作。事件对象还用于提供微件互动,使用与 Gmail 插件相同的操作模型。Google Workspace 插件使用所有相同的微件处理程序函数、Action 对象和操作响应。不过,在 Google Workspace 插件中,操作事件对象包含了可以对回调函数执行更多操作的更多信息。

    作为微件操作结果创建的事件对象包含上下文触发器事件对象中包含的所有字段,以及包含微件信息的字段。

本页概述了 Google Workspace 插件事件对象的新结构。

事件对象结构

下表介绍了 Google Workspace 插件事件对象的顶级结构。事件对象结构包含一个 commonEventObject 顶级字段,用于显示主机独立信息。每个事件对象还可以具有下列特定于主机的顶级字段(由处于活跃状态的主机应用确定):gmailEventObjectcalendarEventObjectdriveEventObject

为了向后兼容,Google Workspace 插件事件对象还包含 Gmail 插件操作事件对象中使用的所有原始字段。下表“原始 Gmail 插件字段”下的字段中列出了这些字段,系统会在新的对象结构中重现这些字段中的信息。

事件对象
eventObject.commonEventObject Common fields object
一个包含所有事件对象通用的信息的对象,无论宿主应用为何。
eventObject.calendar Calendar event object
仅当发起调用的主机是 Google 日历时,此字段才会显示。包含日历和活动信息的对象。
eventObject.drive Drive event object
仅当发起调用的主机是 Google 云端硬盘时,此字段才会显示。包含云端硬盘信息的对象。
eventObject.gmail Gmail event object
仅当发起调用的主机是 Gmail 时才存在。包含 Gmail 信息的对象。
eventObject.docs Docs event object
仅当发出调用的主机是 Google 文档时,此字段才会显示。包含文档信息的对象。
eventObject.sheets Sheets event object
仅当发起调用的主机是 Google 表格时,此字段才会显示。包含 Google 表格信息的对象。
eventObject.slides Slides event object
仅当发起调用的主机是 Google 幻灯片时,此字段才会显示。包含幻灯片信息的对象。
原始 Gmail 插件字段
eventObject.messageMetadata.accessToken string
已弃用。访问令牌。您可以使用此功能通过临时的 Gmail 插件范围访问用户数据。

对于 Google Workspace 插件,请在 eventObject.gmail.accessToken 字段中找到此信息。

eventObject.messageMetadata.messageId string
已弃用。在 Gmail 界面中打开的线程的邮件 ID。

对于 Google Workspace 插件,请在 eventObject.gmail.messageId 字段中找到此信息。

eventObject.clientPlatform string
已弃用。指示事件的发起位置(Web、iOS 或 Android)。

对于 Google Workspace 插件,请在 eventObject.commonEventObject.platform 字段中找到此信息。

eventObject.formInput object
已弃用。卡片中所有表单微件的当前值的映射,每个微件只能有一个值。键是与微件关联的字符串 ID,值是字符串。当您需要从具有预期单数值(如文本输入和开关)的多个微件读取数据时,事件对象提供了 formInput。对于多值微件(例如复选框),您可以改为从 formInputs 读取每个值。

对于 Google Workspace 插件,请改为在 eventObject.commonEventObject.formInputs 字段中找到此信息;具有单个值的微件表示为具有单个元素的数组。

eventObject.formInputs object
已弃用。卡片中当前微件值的映射,以字符串列表表示。键是与微件关联的字符串 ID。对于单值微件,该值以单元素数组的形式呈现。对于多值微件(例如复选框组),所有值都显示在列表中。

对于 Google Workspace 插件,请在 eventObject.commonEventObject.formInputs 字段中找到此信息。

eventObject.parameters object
已弃用。您使用 Action.setParameters()Action 提供的任何其他参数的映射。映射键和值都是字符串。

对于 Google Workspace 插件,请在 eventObject.commonEventObject.parameters 字段中找到此信息。

eventObject.userCountry string
已默认停用和停用。由两个字母组成的代码,表示用户所在的国家或地区。也可以是数字形式的 UN M49 国家/地区代码。

对于 Google Workspace 插件,请在 eventObject.commonEventObject.userLocale 字段中找到此信息。

eventObject.userLocale string
已默认停用和停用。表示用户语言的双字母 ISO 639 代码。如需了解详情,请参阅访问用户语言区域和时区

对于 Google Workspace 插件,请在 eventObject.commonEventObject.userLocale 字段中找到此信息。

eventObject.userTimezone.id string
已默认停用和停用。用户所在时区的时区标识符。示例包括:America/New_YorkEurope/ViennaAsia/Seoul。如需了解详情,请参阅访问用户语言区域和时区

对于 Google Workspace 插件,请在 eventObject.commonEventObject.timeZone.id 字段中找到此信息。

eventObject.userTimezone.offset string
已默认停用和停用。用户所在时区的世界协调时间 (UTC) 的时差(以毫秒为单位)。如需了解详情,请参阅访问用户语言区域和时区

对于 Google Workspace 插件,请在 eventObject.commonEventObject.timeZone.offset 字段中找到此信息。

常见事件对象

常见事件对象是整个事件对象中会向用户的客户端传递与主机无关的一般信息的部分。这些信息包括用户的语言区域、托管应用和平台等详细信息。

除了首页触发器和上下文触发器之外,当用户与微件互动时,插件还会构建事件对象并将其传递给操作回调函数。您的插件的回调函数可以查询通用事件对象,以确定用户客户端中打开的 widget 的内容。例如,您的插件可以在 eventObject.commentEventObject.formInputs 对象中找到用户输入到 TextInput 微件中的文本。

常见的事件对象字段
commonEventObject.platform string
表示事件的发起位置(“WEB”、“IOS”或“ANDROID”)。
commonEventObject.formInputs object
包含所显示卡片中微件当前值的地图。映射键是为每个微件分配的字符串 ID,每个值都是另一个具有单个 "" 键的封装容器对象。地图值对象的结构取决于微件类型:
  • 单值微件(例如文本框):一个字符串列表(只有一个元素)。

    示例:对于文本 ID 为 employeeName 的文本输入微件,请使用 e.commonEventObject.formInputs.employeeName[""].stringInputs.value[0] 访问文本输入值。

  • 多值微件(例如复选框组):一个字符串列表。

    示例:对于 ID 为 participants 的多值微件,请使用 e.commonEventObject.formInputs.participants[""].stringInputs.value 访问值数组。

  • A date-time picker:一个 DateTimeInput object

    示例:对于 ID 为 myDTPicker 的选择器,请使用 e.commonEventObject.formInputs.myDTPicker[""].dateTimeInput 访问 DateTimeInput 对象。

  • A date-only picker:一个 DateInput object

    示例:对于 ID 为 myDatePicker 的选择器,请使用 e.commonEventObject.formInputs.myDatePicker[""].dateInput 访问 DateInput 对象。

  • A time-only picker:一个 TimeInput object

    示例:对于 ID 为 myTimePicker 的选择器,请使用 e.commonEventObject.formInputs.myTimePicker[""].timeInput 访问 TimeInput 对象。

commonEventObject.hostApp string
表示生成事件对象时,插件在哪个主应用上处于活动状态。可能的值包括:
  • GMAIL
  • CALENDAR
  • DRIVE
  • DOCS
  • SHEETS
  • SLIDES
commonEventObject.parameters object
您使用 Action.setParameters() 提供给 Action 的任何其他参数。
commonEventObject.userLocale string
默认处于停用状态。用户的语言和国家/地区标识符,格式为 ISO 639 语言代码 - ISO 3166 国家/地区代码。例如 en-US

如需启用此字段,您必须在插件的清单中将 `addOns.common.useLocaleFromApp` 设为 `true`。您的插件范围列表还必须包含“https://www.googleapis.com/auth/script.locale”。如需了解详情,请参阅访问用户语言区域和时区

commonEventObject.timeZone string
默认处于停用状态。时区 ID 和偏移量。如需启用此字段,您必须在插件的清单中将 `addOns.common.useLocaleFromApp` 设为 `true`。 您的插件的范围列表还必须包含“https://www.googleapis.com/auth/script.locale”。如需了解详情,请参阅访问用户语言区域和时区
commonEventObject.timeZone.id string
用户所在时区的时区标识符。示例包括:America/New_YorkEurope/ViennaAsia/Seoul。如需启用此字段,您必须在插件的清单中将 `addOns.common.useLocaleFromApp` 设为 `true`。 您的插件的范围列表还必须包含“https://www.googleapis.com/auth/script.locale”。如需了解详情,请参阅访问用户语言区域和时区
commonEventObject.timeZone.offset string
以用户所在时区的世界协调时间 (UTC) 为准的时间偏移值(以毫秒为单位)。如需了解详情,请参阅访问用户语言区域和时区

日期时间选择器表单输入

操作回调函数可以接收 commonEventObject.formInputs 字段中的当前微件值。包括用户在日期或时间选择器微件中选择的日期或时间值。不过,信息结构会因微件是配置为日期时间选择器、仅日期选择器还是仅限时间选择器而有所不同。下表介绍了结构差异:

DateTimeInput 对象
dateTimeInput.hasDate 如果输入日期时间包含日期,则为 boolean
true;如果仅包含 false,则仅包含时间。
dateTimeInput.hasTime 如果输入日期时间包含时间,则为 boolean
true;如果仅包含 false,则仅包含日期。
dateTimeInput.msSinceEpoch string
用户选择的时间,以从公元纪年(1970 年 1 月 1 日 00:00:00,世界协调时间)开始计算的毫秒数表示。
DateInput 对象
dateInput.msSinceEpoch string
用户选择的时间,以从公元纪年(1970 年 1 月 1 日 00:00:00,世界协调时间)开始计算的毫秒数表示。
TimeInput 对象
timeInput.hours number
用户选择的小时数。
timeInput.minutes number
用户选择的分钟。

日历活动对象

日历活动对象是整个活动对象中承载用户日历和日历活动相关信息的部分。仅当主应用是 Google 日历时,它才会显示在事件对象中。

下表列出了事件对象的 calendarEventObject 字段中显示的字段。当且仅当数据出现在日历活动中且插件将其 addOns.calendar.currentEventAccess 清单字段设置为 READREAD_WRITE 时,带有“用户生成的数据”字段才会显示在事件对象中。

日历活动对象
calendar.attendees[] list of attendee objects
用户生成的内容。日历活动的参加者列表。
calendar.calendarId string
日历 ID。
calendar.capabilities object
用户生成的内容。一个说明插件查看或更新事件信息功能的对象。
calendar.capabilities.canAddAttendees boolean
用户生成的内容。true 插件(如果插件可以在活动参加者列表中添加新的参加者)或 false(其他情况下)。
calendar.capabilities.canSeeAttendees boolean
用户生成的内容。如果插件可以读取活动参加者列表,则为 true;否则为 false
calendar.capabilities.canSeeConferenceData boolean
用户生成的内容。如果插件可以读取活动会议数据,则为 true;否则为 false
calendar.capabilities.canSetConferenceData boolean
用户生成的内容。如果插件可以更新活动会议数据,则为 true;否则为 false
calendar.capabilities.canAddAttachments boolean
用户生成的内容。true (如果插件可以在活动中添加新的附件);否则为 false
calendar.conferenceData Conference data object
用户生成的内容。一个对象,表示与此事件相关联的任何会议数据,例如 Google Meet 会议详细信息。
calendar.id string
事件 ID。
calendar.organizer object
一个表示活动组织者的对象。
calendar.organizer.email string
活动组织者的电子邮件地址。
calendar.recurringEventId string
周期性事件的 ID。

参加者

参加者对象包含关于 Google 日历活动各个参加者的信息。当且仅当数据存在于 Google 日历活动中并且插件将其 addOns.calendar.currentEventAccess 清单字段设置为 READREAD_WRITE 时,此信息对象才会显示此信息。

参加者对象
attendee.additionalGuests number
参加者表示将携带的新增邀请对象。默认为零。
attendee.comment string
参加者的回复评论(如果有)。
attendee.displayName string
参加者的显示名称。
attendee.email string
参加者的电子邮件地址。
attendee.optional 如果此参加者的出席情况被标记为可选,则为 boolean
true;否则为 false
attendee.organizer boolean
true(如果参加者是此活动的组织者)。
attendee.resource 如果参加者代表一项资源(例如会议室或一件设备),则为 boolean
true;否则为 false
attendee.responseStatus string
参加者的响应状态。可能的值包括:
  • accepted:参加者已接受活动邀请。
  • declined:参加者拒绝了活动邀请。
  • needsAction:参加者尚未回复活动邀请。
  • tentative:参加者已暂时接受活动邀请。
attendee.self 如果此参加者代表显示此活动的日历,则为 boolean
true;否则为 false

会议数据

会议数据对象包含附加到 Google 日历活动的会议的相关信息。这些解决方案可以是 Google 会议解决方案(例如 Google Meet)或第三方会议。当且仅当数据存在于 Google 日历活动中并且插件将其 addOns.calendar.currentEventAccess 清单字段设置为 READREAD_WRITE 时,事件对象中才会显示此信息。

会议数据对象
conferenceData.conferenceId string
会议的 ID。此 ID 旨在让应用能够跟踪会议;您不应向用户显示此 ID。
conferenceData.conferenceSolution object
一个表示会议解决方案的对象,例如 Hangouts 或 Google Meet。
conferenceData.conferenceSolution.iconUri string
表示此会议解决方案的用户可见图标的 URI。
conferenceData.conferenceSolution.key object
唯一标识此事件的会议解决方案的密钥。
conferenceData.conferenceSolution.key.type string
会议解决方案类型。可能的值包括:
  • eventHangout(面向个人用户版 Hangouts)(http://hangouts.google.com)。
  • 适用于 Google Workspace 用户 (http://hangouts.google.com) 的传统版 Hangouts 用户eventNamedHangout
  • hangoutsMeet,适用于 Google Meet (http://meet.google.com)。
conferenceData.conferenceSolution.name string
此会议解决方案的用户可见名称(未本地化)。
conferenceData.entryPoints[] list of entry point objects
会议入口点的列表,例如网址或电话号码。
conferenceData.notes string
要向用户显示的会议相关附加说明(如网域管理员说明或法律声明)。可以包含 HTML。长度上限为 2048 个字符。
conferenceData.parameters object
一个对象,它包含供插件使用的已定义参数数据映射。
conferenceData.parameters.addOnParameters object
参数字符串键和值的映射。 这些键和值由插件开发者定义,以便将信息附加到特定会议上以供插件使用。

入口点

入口点对象包含有关访问特定会议(例如通过电话或视频)的既定方式的信息。当且仅当数据存在于 Google 日历活动中并且插件将其 addOns.calendar.currentEventAccess 清单字段设置为 READREAD_WRITE 时,此信息对象才会显示此信息。

入口点对象
entryPoint.accessCode string
用于访问会议的访问代码。 长度上限为 128 个字符。会议服务提供商通常仅使用 {accessCode, meetingCode, passcode, password, pin} 的子集来提供会议访问权限。匹配且仅显示会议服务提供商使用的字段。
entryPoint.entryPointFeatures list
入口点的功能。目前,这些功能仅适用于 phone 入口点:
  • toll:入口点是收费电话。
  • toll_free:入口点是免费电话。
entryPoint.entryPointType string
入口点的类型。可能的值包括:
  • more:其他会议加入说明,例如备用电话号码。会议只能有一个 more 入口点;如果存在,至少需要一个其他类型的入口点。
  • phone:通过电话号码加入会议。会议可以有零个或多个 phone 入口点。按格式设置并按字母顺序排序后,Google 日历只会显示前两个手机入口点。
  • sip:通过 SIP 加入会议。一个会议最多只能有一个 sip 入口点。
  • video:通过 HTTP 加入会议。一个会议最多只能有一个 video 入口点。
entryPoint.label string
入口点 URI 的用户可见标签(未本地化)。
entryPoint.meetingCode string
用于访问会议的会议代码。 长度上限为 128 个字符。会议服务提供商通常仅使用 {accessCode, meetingCode, passcode, password, pin} 的子集来提供会议访问权限。匹配且仅显示会议服务提供商使用的字段。
entryPoint.passcode string
用于访问会议的密码。 长度上限为 128 个字符。会议服务提供商通常仅使用 {accessCode, meetingCode, passcode, password, pin} 的子集来提供会议访问权限。匹配且仅显示会议服务提供商使用的字段。
entryPoint.password string
用于访问会议的密码。 长度上限为 128 个字符。会议服务提供商通常仅使用 {accessCode, meetingCode, passcode, password, pin} 的子集来提供会议访问权限。匹配且仅显示会议服务提供商使用的字段。
entryPoint.pin string
用于访问会议的 PIN 码。 长度上限为 128 个字符。会议服务提供商通常仅使用 {accessCode, meetingCode, passcode, password, pin} 的子集来提供会议访问权限。匹配且仅显示会议服务提供商使用的字段。
entryPoint.regionCode string
电话号码的区号。URI 不包含国家/地区代码时的用户所需的网址。值基于公开的 CLDR 地区代码列表
entryPoint.uri string
入口点的 URI。长度上限为 1300 个字符。格式取决于入口点类型:
  • more:需要 http:https: 架构。
  • phone:需要 tel: 架构。URI 应包含整个拨号序列(例如 "tel:+12345678900,,,12345678;1234")。
  • sip:需要 sip:sips: 架构。例如“sip:12345678@myprovider.com”。
  • video:需要 http:https: 架构。

云端硬盘事件对象

云端硬盘事件对象是整个事件对象中承载关于用户 Google 云端硬盘及其内容的信息的一部分。仅当主应用是 Google 云端硬盘时,此对象才会出现在事件对象中。

云端硬盘事件对象
drive.activeCursorItem Drive item object
云端硬盘内容当前处于有效状态。
drive.selectedItems[] list of Drive item objects
在云端硬盘中选择的内容(文件或文件夹)列表。

云端硬盘内容

云端硬盘内容对象包含有关特定云端硬盘内容(如文件或文件夹)的信息。

云端硬盘内容对象
item.addonHasFileScopePermission boolean
如果为 true,则插件已请求并收到此内容的 https://www.googleapis.com/auth/drive.file 范围授权;否则此字段为 false
item.id string
所选内容的 ID。
item.iconUrl string
表示所选项的图标网址。
item.mimeType string
所选内容的 MIME 类型。
item.title string
所选内容的标题。

Gmail 事件对象

Gmail 事件对象是整个用户对象对象中承载有关用户 Gmail 邮件的信息的部分。仅当主应用是 Gmail 时,此 ID 才会显示在事件对象中。

Gmail 事件对象
gmail.accessToken string
Gmail 专用访问令牌。您可以将此令牌与 GmailApp.setCurrentMessageAccessToken(accessToken) 方法结合使用,以向插件授予用户当前打开的 Gmail 邮件的临时访问权限,或让您的插件撰写新草稿。
gmail.bccRecipients[] list of strings
默认处于停用状态。目前正在撰写插件草稿中的“密送:”收件人电子邮件地址列表。如需启用此字段,您必须将清单中的 `addOns.gmail.composeTrigger.DraftAccess` 字段设置为 `METADATA`。
gmail.ccRecipients[] list of strings
默认处于停用状态。目前在插件草拟中包含的“抄送:”收件人电子邮件地址列表。如需启用此字段,您必须将清单中的 `addOns.gmail.composeTrigger.DraftAccess` 字段设置为 `METADATA`。
gmail.messageId string
当前打开的 Gmail 邮件的 ID。
gmail.threadId string
当前打开的 Gmail 会话 ID。
gmail.toRecipients[] list of strings
默认处于停用状态。插件正在撰写的草稿中所含的“收件人:”收件人电子邮件地址列表。如需启用此字段,您必须将清单中的 `addOns.gmail.composeTrigger.DraftAccess` 字段设置为 `METADATA`。

Google 文档事件对象

文档事件对象是整个事件对象中承载用户文档及其内容相关信息的部分。仅当主应用是 Google 文档时,它才会出现在事件对象中。

Google 文档事件对象
docs.id string
仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示。在文档界面中打开的文档 ID。
docs.title string仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示
文档标题会在文档界面中打开。
docs.addonHasFileScopePermission boolean
如果为 true,插件已经为在文档界面中打开的文档请求并获得了 https://www.googleapis.com/auth/drive.file 范围授权;否则,该字段为 false

Google 表格事件对象

Google 表格事件对象是用于加载用户文档及其内容相关信息的整个事件对象的一部分。仅当主应用是 Google 表格时,它才会显示在事件对象中。

Google 表格事件对象
sheets.id string
仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示。在表格界面中打开的电子表格的 ID。
sheets.title string
仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示。在 Google 表格界面中打开的电子表格标题。
sheets.addonHasFileScopePermission boolean
如果为 true,则表示插件已请求在 Google 表格界面中打开的电子表格,并收到了 https://www.googleapis.com/auth/drive.file 的授权请求;否则此字段为 false

Google Slides 事件对象

幻灯片事件对象是整个事件对象中承载用户文档及其内容信息的一部分。仅当主应用是 Google 幻灯片时,它才会出现在事件对象中。

Google Slides 事件对象
slides.id string
仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示。在幻灯片界面中打开的演示文稿 ID。
slides.title string
仅当 https://www.googleapis.com/auth/drive.file 范围已获得用户授权时,此字段才会显示。幻灯片的标题会在幻灯片界面中打开。
slides.addonHasFileScopePermission boolean
如果为 true,则表示插件已请求且获得了在幻灯片界面中打开的演示文稿的 https://www.googleapis.com/auth/drive.file 范围授权;否则,此字段为 false