本页面概述了 Google Workspace 插件事件对象的结构。
事件对象是自动构建和传递的 JSON 结构 作为参数,以便在用户与 插件。事件对象会将有关托管应用和当前上下文的客户端信息传递到插件服务器端回调函数。
Google Workspace Add-ons 会在以下位置使用事件对象:
首页触发器。 您定义的每个
homepageTrigger
函数都会自动传递一个事件 对象触发。您可以在首页触发器函数中使用此对象来识别活跃的主机应用、客户端的平台、用户语言区域和其他信息。在首页触发器触发时创建的事件对象不包含其他两种情况下包含的所有字段;系统会省略与微件和情境信息相关的字段。
内容相关触发器。 每个托管应用都会提供一组不同的情境触发器,这些触发器会在用户进入特定情境时触发。例如:
当上下文触发器触发时,托管应用会调用 对应的
runFunction
,向其传递一个 事件对象作为参数传递。使用上下文关联时创建的事件对象, 触发器触发包含首页触发器事件中包含的所有字段 对象以及包含上下文信息的字段。微件操作。事件对象 也用于提供widget 交互性, 操作模型 。Google Workspace 插件使用完全相同的 widget 处理程序函数、
Action
对象和操作响应。不过,在 Google Workspace 插件中, 操作事件对象 包含回调函数可以作用于的更多详细信息。作为 widget 操作的结果而创建的事件对象包含情境触发器事件对象中包含的所有字段,以及包含 widget 信息的字段。
预览链接触发器。 在 Google 文档、表格和幻灯片中,您可以执行以下操作: 为第三方服务配置链接预览 根据特定网址格式来预测当用户与符合模式的链接互动时,系统会触发
linkPreviewTriggers
,并将包含链接的事件对象传递给触发器的回调函数。您的插件可以使用此事件对象构造 可显示主机内链接相关信息的智能条状标签和卡片 应用。您还可以构建 widget 操作, 预览卡片及其内容
事件对象结构
下表介绍了
Google Workspace 插件事件对象。活动
对象结构包含一个 commonEventObject
与主机无关的信息的顶级字段。每个事件对象还可以包含以下特定于主机的顶级字段之一,具体取决于当前的主机应用:gmailEventObject
、calendarEventObject
或 driveEventObject
。
为了向后兼容,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 文档时,此字段才会显示。一个包含 Google 文档信息的对象。 |
eventObject.sheets |
Sheets event object
仅当调用方主机为 Google 表格时才会存在。一个对象 包含 Google 表格信息。 |
eventObject.slides |
Slides event object
仅当调用方主机为 Google 幻灯片时才会存在。一个包含 Google 幻灯片信息的对象。 |
原始 Gmail 插件字段 | |
eventObject.messageMetadata.accessToken |
string 已废弃。访问令牌。您可以使用 以启用使用临时 Gmail 插件范围访问用户数据的权限。
对于 Google Workspace 插件,请在
|
eventObject.messageMetadata.messageId |
string 已弃用。线程的消息 ID 在 Gmail 界面中打开。
对于 Google Workspace 插件,请在
|
eventObject.clientPlatform |
string 已弃用。指明事件的来源平台(网站、iOS 或 Android)。
对于 Google Workspace 插件,请在
|
eventObject.formInput |
object 已弃用。卡片中所有表单 widget 的当前值的映射,每个 widget 的值不得超过 1 个。通过 是与微件关联的字符串 ID,值是 字符串。当您需要从多个具有预期单值的 widget(例如文本输入框和开关)读取数据时,事件对象会提供 formInput 以供您使用。对于
多值微件(如复选框),您可以从
formInputs 。
对于 Google Workspace 插件,请改为在 |
eventObject.formInputs |
object 已废弃。卡片中微件的当前值的映射,以字符串列表的形式呈现。键是与微件关联的字符串 ID。对于单值 widget,值以单元素数组的形式显示。对于多值 widget 例如复选框组,则所有值都会显示在列表中。
对于 Google Workspace 插件,请在 |
eventObject.parameters |
object 已废弃。任何其他维度 提供给 <ph type="x-smartling-placeholder"></ph> Action ,使用的是
Action.setParameters() 。映射键和值均为字符串。
对于 Google Workspace 插件,请在
|
eventObject.userCountry |
string 已废弃,默认处于停用状态。表示用户所在国家/地区的双字母代码。也可以是 UN M49 国家/地区代码。
对于 Google Workspace 插件,请在 |
eventObject.userLocale |
string 已废弃,默认处于停用状态。通过 两个字母 ISO 639 代码,用于表示用户的语言。请参阅 访问用户 语言区域和时区。
对于 Google Workspace 插件,请在 |
eventObject.userTimezone.id |
string 已废弃,默认处于停用状态。用户时区的时区标识符。例如: America/New_York 、Europe/Vienna 和
Asia/Seoul 。请参阅
<ph type="x-smartling-placeholder"></ph>
访问用户语言区域和时区,了解更多详情。
对于 Google Workspace 插件,请在 |
eventObject.userTimezone.offset |
string 默认情况下已废弃和停用。用户时区的相对于世界协调时间 (UTC) 的时间偏移量,以毫秒为单位。请参阅 <ph type="x-smartling-placeholder"></ph> 访问用户语言区域和时区,了解更多详情。
对于 Google Workspace 插件,请在
|
常见事件对象
常规事件对象是整个事件对象的一部分,用于将与主机无关的一般信息从用户的客户端传递到插件。这个 信息包括用户语言区域、托管应用和平台等详细信息。
除了首页和上下文触发器之外,插件还可以构建和传递
事件对象传递给操作回调函数
当用户与 widget 互动时触发。您的插件回调函数可以查询通用事件对象,以确定用户客户端中打开的 widget 的内容。例如,您的插件可以查找用户在
TextInput
widget
eventObject.commentEventObject.formInputs
对象。
常见事件对象字段 | |
---|---|
commonEventObject.platform |
string 表示事件的来源(`WEB`、 “IOS”或“ANDROID”)。 |
commonEventObject.formInputs |
object 一个映射,其中包含显示的卡片中微件的当前值。映射键是分配给每个 widget 的字符串 ID。 映射值对象的结构为 具体取决于微件类型:
|
commonEventObject.hostApp |
string 表示该插件所在的托管应用 在生成事件对象时触发。可能的值包括 以下: <ph type="x-smartling-placeholder">
|
commonEventObject.parameters |
object 您要添加的所有其他参数
Action 使用
Action.setParameters() 。
|
commonEventObject.userLocale |
string 默认处于停用状态。用户的语言和国家/地区标识符,格式为 ISO 639 语言代码-ISO 3166 国家/地区代码。例如 en-US 。
如需启用此字段,您必须在插件清单中将 |
commonEventObject.timeZone |
string 默认处于停用状态。时区 ID 和偏移量。要启用该字段,您必须设置 将 addOns.common.useLocaleFromApp 设置为 true 。
插件的范围列表还必须包括
https://www.googleapis.com/auth/script.locale 。
请参阅
访问用户语言区域和时区,了解更多详情。
|
commonEventObject.timeZone.id |
string 时区标识符。示例包括: America/New_York 、Europe/Vienna 和 Asia/Seoul 。要启用该字段,您必须设置
将 addOns.common.useLocaleFromApp 设置为 true 。
您的插件范围列表还必须包含 https://www.googleapis.com/auth/script.locale 。如需了解详情,请参阅访问用户语言区域和时区。
|
commonEventObject.timeZone.offset |
string 相对于世界协调时间 (UTC) 的用户时区 时区,以毫秒为单位。如需了解详情,请参阅访问用户语言区域和时区。 |
日期时间选择器表单输入
操作回调函数可以接收 commonEventObject.formInputs
字段中的当前 widget 值。这包括用户在日期或时间选择器中选择的日期或时间值
微件。
不过,信息的结构会因
微件被配置为日期时间选择器、仅限日期的选择器或仅限时间的选择器
选择器。下表介绍了结构差异:
日历活动对象
日历活动对象是整个事件对象的部分, 包含有关用户的日历和日历活动的信息。只有当托管应用是 Google 日历时,此属性才会出现在事件对象中。
下表列出了 calendarEventObject
中显示的字段
事件对象的字段。只有当日历活动中存在数据,并且插件将其 addOns.calendar.currentEventAccess
清单字段设为 READ
或 READ_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 日历
事件。只有当日历活动中存在数据且插件将其 addOns.calendar.currentEventAccess
清单字段设置为 READ
或 READ_WRITE
时,事件对象中才会包含此信息。
参加者对象 | |
---|---|
attendee.additionalGuests |
number 参加者的额外邀请对象人数 表明自己带着什么默认值为 0。 |
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 参加者的回复状态。可能的值包括:
|
attendee.self |
如果此参加者代表显示此活动的日历,则返回 boolean true ;否则,返回 false 。
|
会议数据
会议数据对象会携带所附加会议的相关信息
Google 日历活动。这些可以是 Google 会议解决方案(例如 Google Meet),也可以是第三方会议。这些信息显示在
事件对象,当且仅当 Google 日历活动和
插件会设置其 addOns.calendar.currentEventAccess
清单
字段更改为
READ
或 READ_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 会议解决方案类型。可能的值包括:
|
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
清单字段设置为 READ
或 READ_WRITE
时,事件对象中才会显示此信息。
入口点对象 | |
---|---|
entryPoint.accessCode |
string 用于访问会议的访问码。 长度不得超过 128 个字符。会议提供商通常只使用 { accessCode 、meetingCode 、passcode 、password 、pin } 的一部分来提供对会议的访问权限。匹配并仅显示字段
和会议提供商使用的通信服务
|
entryPoint.entryPointFeatures |
list 入口点的功能。目前,以下功能仅适用于 phone 入口点:
|
entryPoint.entryPointType |
string 入口点的类型。可能的值如下:
|
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 个字符。格式取决于入口点类型:
|
云端硬盘事件对象
Drive 事件对象是整个事件对象的一部分,用于携带用户 Google 云端硬盘及其内容的相关信息。它只是 事件对象中是否存在该 ID。
云端硬盘事件对象 | |
---|---|
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。
Gmail 事件对象 | |
---|---|
gmail.accessToken |
string Gmail 专用访问令牌。您可以使用 这个词元的 <ph type="x-smartling-placeholder"></ph> 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
针对在 Google 文档界面中打开的文档的范围授权;否则这个
字段为 false 。
|
docs.matchedUrl.url |
string
仅在满足以下条件时才会显示:
在 Google 文档中生成预览的链接的网址。如需使用此字段,您必须在插件清单中配置 LinkPreviewTriggers 。如需了解详情,请参阅预览包含智能条状标签的链接。
当用户预览链接 "docs" : { "matchedUrl" : { "url" : "https://www.example.com/12345" } } |
Google 表格事件对象
Google 表格事件对象是整个事件对象的一部分,用于携带用户文档及其内容的相关信息。它仅存在于 事件对象(如果托管应用是 Google 表格)。
Google 表格事件对象 | |
---|---|
sheets.id |
string 仅当已配置
https://www.googleapis.com/auth/drive.file 范围时,此字段才会显示
由用户授权。在 Google 表格界面中打开的电子表格的 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 。
|
sheets.matchedUrl.url |
string
仅当满足以下条件时才存在:
在 Google 表格中生成预览的链接网址。如需使用此字段,您必须在插件清单中配置 LinkPreviewTriggers 。如需了解详情,请参阅预览包含智能条状标签的链接。
用户预览链接 "sheets" : { "matchedUrl" : { "url" : "https://www.example.com/12345" } } |
Google 幻灯片事件对象
Google 幻灯片事件对象是整个事件对象的一部分,用于携带用户文档及其内容的相关信息。它仅存在于 事件对象。
Google 幻灯片事件对象 | |
---|---|
slides.id |
string 仅当用户授权了
https://www.googleapis.com/auth/drive.file 范围时才会出现。在 Google 幻灯片界面中打开的演示文稿的 ID。
|
slides.title |
string 仅当用户授权了
https://www.googleapis.com/auth/drive.file 范围时才会出现。在 Google 幻灯片界面中打开的演示文稿的标题。
|
slides.addonHasFileScopePermission |
boolean 如果状态为 true ,则表明该插件已请求
并收到 https://www.googleapis.com/auth/drive.file
在幻灯片界面中打开演示文稿的范围授权;否则
此字段为false
|
slides.matchedUrl.url |
string
仅当满足以下条件时才存在:
在 Google 幻灯片中生成预览的链接的网址。如需使用此字段,您必须在插件清单中配置 LinkPreviewTriggers 。
如需了解详情,请参阅预览包含智能条状标签的链接。
用户预览链接 "slides" : { "matchedUrl" : { "url" : "https://www.example.com/12345" } } |