Office-js Outlook:如何配置规则仅在新建邮件时打开任务窗格
Outlook邮件任务窗格仅新建空白邮件触发的实现方案
该需求可以实现。目前Outlook原生清单规则没有直接区分「新建邮件」和「回复/转发邮件」的配置项,需要通过「清单规则粗过滤+运行时类型判断细控制」的组合方案实现。
第一步:保留原有触发规则
你现有清单里的Rule规则不需要修改,保持编辑模式下的Message类型触发即可:
<Rule xsi:type="RuleCollection" Mode="Or"> <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit" /> </Rule>
第二步:添加运行时类型判断逻辑
在任务窗格的初始化入口中,调用Outlook原生提供的getComposeTypeAsyncAPI判断当前邮件的撰写类型,非新建场景直接关闭任务窗格即可,参考代码如下:
Office.onReady((info) => { if (info.host !== Office.HostType.Outlook) return; // 获取当前邮件撰写类型 Office.context.mailbox.item.getComposeTypeAsync((result) => { if (result.status !== Office.AsyncResultStatus.Succeeded) return; const currentComposeType = result.value; // 仅新建邮件场景保留任务窗格 if (currentComposeType !== Office.MailboxEnums.ComposeType.NewMail) { Office.context.ui.closeContainer(); return; } // 此处写入新建邮件场景下的原有业务逻辑 // initYourBusinessLogic() }); });
注意事项
getComposeTypeAsyncAPI最低要求的Outlook邮箱API要求集版本为1.10,需要在插件清单中配置最低要求集不低于该版本,确保兼容主流Outlook客户端版本。- 若需要兼容更低版本的Outlook客户端,可以使用兜底判断逻辑:判断
Office.context.mailbox.item.conversationId是否为空,正常新建空白邮件的会话ID为空,回复/转发邮件会携带已存在的会话ID,该方案兼容性更高,仅在极少数特殊场景下会出现误判,日常使用足够。
内容的提问来源于stack exchange,提问作者Hardik
相关产品推荐
相关产品推荐

