上下文 Outlook 加载项
上下文加载项是 Outlook 加载项,可基于邮件或约会中的文本激活。 通过使用上下文加载项,用户可以启动与邮件项目相关的任务,而无需离开项目本身。 例如,上下文加载项可以在邮件项正文中选择一个字符串,用于打开会议建议加载项。
可以指定正则表达式规则,以在邮件的特定字段中找到匹配项时激活上下文加载项。 上下文加载项仅在读取模式下激活。 当用户撰写项目时,Outlook 不会激活上下文加载项。
重要
基于实体的上下文 Outlook 加载项现已停用。 作为替代解决方案,请在上下文加载项中实现正则表达式规则。
配置清单
注意
当外接程序对 Microsoft 365 使用统一清单时,不支持上下文 Outlook 加载项。
上下文加载项的清单必须包含 一个 ExtensionPoint 元素,其 xsi:type
属性设置为 DetectedEntity
。 然后,在 <ExtensionPoint> 元素中,外接程序必须使用 Rule 元素指定正则表达式规则,其 xsi:type
属性设置为 ItemHasRegularExpressionMatch。
以下示例在当前邮件项目的正文中包含股票符号时激活加载项。
<ExtensionPoint xsi:type="DetectedEntity">
<Label resid="Context.Label" />
<SourceLocation resid="DetectedEntity.URL" />
<Rule xsi:type="ItemHasRegularExpressionMatch" PropertyName="BodyAsPlaintext" RegExName="TickerSymbols" RegExValue="\b(NYSE|NASDAQ|AMEX):\s*[A-Za-z]+\b" />
</ExtensionPoint>
正则表达式规则中支持的字符
Outlook 根据客户端计算机上的浏览器或 Webview 控件使用的 JavaScript 解释器规则来评估正则表达式。 为简洁起见,本文使用“browser”来引用“浏览器或 Web 视图控件”。 Outlook 支持所有 XML 处理器也支持的相同特殊字符列表。 下表列出了这些特殊字符。 可以通过指定相应字符的转义序列,在正则表达式中使用这些字符。
字符 | 说明 | 要使用的转义序列 |
---|---|---|
" |
双引号 | " |
& |
与号 | & |
' |
撇号 | ' |
< |
小于号 | < |
> |
大于号 | > |
在规则中使用正则表达式的最佳做法
使用正则表达式时,请注意以下事项。
如果对项的正文指定
ItemHasRegularExpressionMatch
规则,则正则表达式应进一步筛选正文,并且不应尝试返回项的整个正文。 使用正则表达式(例如.*
)尝试获取项的整个正文并不总是返回预期的结果。一个浏览器上返回的纯文本正文与另一个浏览器上返回的纯文本正文可能略有不同。 如果使用含有
BodyAsPlaintext
的ItemHasRegularExpressionMatch
规则作为PropertyName
属性,请在你的外接程序支持的所有浏览器上测试正则表达式。因为不同的浏览器获取所选项目的文本正文的方法不同,所以应确保你的正则表达式支持正文文本部分所返回的细微差异。 例如,浏览器可能以不同的方式返回换行符。 For more information, see W3C DOM Compatibility - HTML.
项目的 HTML 正文在经典 Outlook on Windows 或 Outlook on Mac 之间略有不同,Outlook 网页版、移动设备上或新的 Outlook on Windows 上略有不同。 请仔细定义正则表达式。
根据应用正则表达式的 Outlook 客户端、设备类型或属性,在将正则表达式设计为激活规则时,每个客户端都有其他最佳做法和限制。 有关详细信息,请参阅 Outlook 外接程序的激活限制和 JavaScript API。
在 JavaScript 代码中使用正则表达式结果
在加载项的 JavaScript 代码中,可以通过对当前项使用以下方法来获取正则表达式的匹配项。
getRegExMatches 返回加载项规则中指定的所有正则表达式当前
ItemHasRegularExpressionMatch
项目中的匹配项。getRegExMatchesByName 为外接程序的
ItemHasRegularExpressionMatch
规则中指定的已标识正则表达式返回当前项目中的匹配项。getSelectedRegExMatches 返回加载项规则中指定的
ItemHasRegularExpressionMatch
正则表达式当前项目中突出显示的匹配项。
计算正则表达式时,匹配项将以数组对象的形式返回到你的外接程序。 对于 getRegExMatches
,该对象具有正则表达式名称的标识符。
注意
Outlook 不会以数组中的任何特定顺序返回匹配项。 此外,不应假定匹配项在此数组中以相同顺序返回,即使在同一邮箱中的同一项目上运行相同的每个客户端也是如此。
下面是规则集合的示例,该集合包含一个 ItemHasRegularExpressionMatch
规则,该规则具有名为 的 videoURL
正则表达式。
<Rule xsi:type="RuleCollection" Mode="And">
<Rule xsi:type="ItemIs" ItemType="Message"/>
<Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="videoURL" RegExValue="http://www\.youtube\.com/watch\?v=[a-zA-Z0-9_-]{11}" PropertyName="BodyAsPlaintext"/>
</Rule>
getRegExMatches
然后,对当前消息调用 方法,以将变量videos
设置为指定ItemHasRegularExpressionMatch
规则的结果。
const videos = Office.context.mailbox.item.getRegExMatches().videoURL;
另请参阅
- Outlook 加载项:Contoso 订单编号(根据正则表达式匹配项激活的示例上下文加载项)
- 生成首个 Outlook 加载项