在Outlook加载项中,如何检查我们处于撰写模式还是阅读模式?

时间:2018-09-12 11:11:54

标签: outlook-addin office-js outlook-web-addins

我正在创建一个Outlook加载项,并在React应用程序中使用OfficeJS API。在这里,我想为组合模式加载一组特定的功能,为读取模式加载另一组功能。所以我的问题是,如何查看我目前处于哪种模式?

2 个答案:

答案 0 :(得分:2)

manifest.xml文件中,您应使用不同的ExtensionPoint来撰写和阅读视图,如下所示...

<ExtensionPoint xsi:type="MessageReadCommandSurface">
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
</ExtensionPoint>

每个部分都必须具有ActionExecuteFunction类型的ShowTaskpane标签。如果您输入的是ExecuteFunction,则只需为读取和编写表面指定不同的函数名称,如下所示...

<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ExecuteFunction">
    <FunctionName>FunctionSpecificToReadView</FunctionName>
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ExecuteFunction">
    <FunctionName>FunctionSpecificToComposeView</FunctionName>
</Action>
</ExtensionPoint>

如果您输入的是ShowTaskpane,则您将使用不同的文件名将其加载到框架中,或者如果您使用的文件相同,则添加一些参数,如下所示。

<ExtensionPoint xsi:type="MessageReadCommandSurface">
<Action xsi:type="ShowTaskpane">
    <SourceLocation resid="readTaskPaneUrl" />
</Action>
</ExtensionPoint>
<ExtensionPoint xsi:type="MessageComposeCommandSurface">
<Action xsi:type="ShowTaskpane">
    <SourceLocation resid="composeTaskPaneUrl" />
</Action>
</ExtensionPoint>
...
<Resources>
<bt:Urls>
    <bt:Url id="readTaskPaneUrl" DefaultValue="https://localhost:44300/read.html"/>
    <bt:Url id="composeTaskPaneUrl" DefaultValue="https://localhost:44300/compose.html"/>
</bt:Urls>
</Resources>

在每个HTML页面中,您都知道外接程序被调用的表面。

答案 1 :(得分:2)

如果您不想为读取和撰写模式创建两个单独的登录页面,我通常会检查API是否知道该模式。

您可以检查displayReplyForm API,这是一种读取模式API,因此,如果未定义,则您处于撰写模式。

if (Office.context.mailbox.item.displayReplyForm != undefined) {
  // read mode
} else {
  // compose mode
}