我有一个Outlook加载项,可以在按命令按钮时重定向到外部网站。在Office Outlook Online中,一切正常,但是在Office Outlook Desktop上,该命令未执行。为什么会这样?
该插件托管在基于Ubuntu 14.04的node.js服务器上,并带有有效的https证书。如果我使用按钮从任务窗格中调用相同的命令,则该命令将被执行,并且用户将被重定向。
设置服务器时遇到很多问题,但是现在服务器正在运行,文件可以访问而没有问题。 我以为我的自签名证书可能有问题,因此将其更改为来自受信任来源的证书,但是输出是相同的。 但是,像在Windows系统中启动本地node.js服务器并通过localhost调用一样,可以在本地运行它。该命令正在执行。
我希望在Outlook Desktop中执行命令按钮的命令类似于在Outlook Web中执行命令的命令。 它不显示任何错误消息。 notificationMessage只是一直告诉我它当前正在执行命令,但是什么也没有发生,甚至没有改变。 我必须通过关闭窗口来强制任务停止。
我看到其他人提到了类似的问题(How to get 'Commands' button working in Office Addins?),但是答案并没有解决我的问题。
在基于ubuntu的nodejs服务器上托管我的插件时,在Outlook Desktop上未执行命令是我的问题。 如果有人对解决这个问题有一个想法,或者看到有人遇到了同样的问题,可以解决这个问题,我将非常感谢。
谢谢。
Manifest.xml (出于机密原因,真实服务器名称已交换为“ ourServer” bc。) GotoSite-> window.open(“ https://google.com”)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
<Id>0ec8dc72-014b-4426-acd3-f06edeb15052</Id>
<Version>1.0.0.0</Version>
<ProviderName>Convien</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="Convien"/>
<Description DefaultValue="Come together... right now!"/>
<IconUrl DefaultValue="https://ourServer.convien.com:3000/assets/Convien32X32.png"/>
<HighResolutionIconUrl DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
<SupportUrl DefaultValue="https://convien.com"/>
<AppDomains>
<AppDomain>convien.com</AppDomain>
<AppDomain>https://easy.convien.com</AppDomain>
<AppDomain>https://www.google.com</AppDomain>
<AppDomain>https://stress.convien.com/convien_outlook/</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox"/>
</Hosts>
<Requirements>
<Sets>
<Set Name="Mailbox" MinVersion="1.1"/>
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://ourServer.convien.com:3000/src/taskpane/taskpane.html"/>
<RequestedHeight>250</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteItem</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit"/>
<Rule xsi:type="ItemIs" ItemType="Appointment" FormType="Edit"/>
</Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.3">
<bt:Set Name="Mailbox"/>
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="Commands.Url"/>
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="msgReadGroup">
<Label resid="GroupLabel"/>
<Control xsi:type="Button" id="linkButton">
<Label resid="LinkButton.Label"/>
<Supertip>
<Title resid="LinkButton.Label"/>
<Description resid="LinkButton.Tooltip"/>
</Supertip>
<Icon>
<bt:Image size="16" resid="Icon.80x80"/>
<bt:Image size="32" resid="Icon.80x80"/>
<bt:Image size="80" resid="Icon.80x80"/>
</Icon>
<Action xsi:type="ExecuteFunction">
<FunctionName>GotoSite</FunctionName>
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="Icon.16x16" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
<bt:Image id="Icon.32x32" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
<bt:Image id="Icon.80x80" DefaultValue="https://ourServer.convien.com:3000/assets/Convien80X80.png"/>
</bt:Images>
<bt:Urls>
<bt:Url id="Commands.Url" DefaultValue="https://ourServer.convien.com:3000/src/commands/commands.html"/>
<bt:Url id="Taskpane.Url" DefaultValue="https://ourServer.convien.com:3000/src/taskpane/taskpane.html"/>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="GroupLabel" DefaultValue="Meeting Place"/>
<bt:String id="LinkButton.Label" DefaultValue="Convien Easy"/>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="LinkButton.Tooltip" DefaultValue="Opens Convien Easy web application."/>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
答案 0 :(得分:0)
有两种可能性:函数未成功执行,或者特定的“重定向”代码正在运行,但没有达到预期的效果。既然您提到代码是从任务窗格运行的,那么此答案将涵盖第一种可能性。
“进行中”通知消息表示在执行函数的末尾未调用event.completed()。第一步是验证是否定义了event.completed(),然后逐步检查代码以确保函数成功运行。您也可以尝试调用notificationMessages API,以在消息中看到可见的效果。
This doc描述了如何实现清单中FunctionName定义的功能。对于异步代码,应在回调中实际调用event.completed()。
调试无UI的外接程序非常棘手,因为F12 Debugger仅在外接程序运行后才会附加。您可以使用Fiddler验证.html是否成功加载(这可以帮助排除证书错误)。并且,如果需要,您可以附加Visual Studio脚本调试器,该调试器应在附加程序执行之间保持附加状态(为此,调用event.completed()很重要,因为否则,第二次执行将被排队,等待第一次执行即可完成。
答案 1 :(得分:0)
非常确定问题如下(至少在word桌面中)。
1)命令和任务窗格在不同的javascript上下文中工作。 即在命令窗格中运行的功能无法访问任务窗格。
2)命令功能区是无记忆的。每当您单击按钮时,它们就会启动一个新的无头js上下文。
3)由于没有头,因此无法打开新窗口。
4)由于功能区已从任务窗格断开,因此任何window.location更改尝试都不会重定向任务窗格。
我通过使用websocket将命令从服务器退回来“解决”了这一问题。是。说真的
顺便说一句,Websocket是我验证按钮确实有效的方式。即使我对重定向的工作方式有误,这也是一个非常有用的调试工具,因为f12调试器无法附加到命令功能区。
请用巨型充气锤为我“设计”此头的人敲打。