簡體   English   中英

為什么沒有UI的Office Addin命令在從taskpane發送相同命令時沒有響應?

[英]Why does my Office Addin command without UI not respond while the same command send from taskpane does?

我有一個outlook addin,按下命令按鈕重定向到外部網站。 在Office Outlook Online中,一切正常,但在Office Outlook桌面上,該命令未執行。 為什么會這樣?

插件托管在node.js服務器上,該服務器基於Ubuntu 14.04,具有https的有效證書。 如果我使用按鈕從任務窗格調用相同的命令,則執行該命令並重定向用戶。

我在設置服務器時遇到了很多問題,但現在服務器正在運行,文件可以無問題地訪問。 我認為這可能是我的自簽名證書的問題,並將其更改為來自可信來源的證書,但輸出是相同的。 但是在本地運行它就像從我的Windows系統啟動本地node.js服務器並通過localhost調用它一樣。 該命令正在執行中。

我希望Outlook桌面中命令按鈕的命令執行類似於它在Outlook Web中執行的命令。 它不顯示任何錯誤消息。 notificationMessage只是告訴我它當前正在執行命令,但沒有任何反應甚至發生變化。 我必須通過關閉窗口強制停止任務。

我見過其他人提到類似的問題( 如何在Office Addins中使用'命令'按鈕? )但它的答案對我的問題沒有幫助。

在基於ubuntu的nodejs服務器上托管我的插件時,在Outlook桌面上沒有執行該命令是我的問題。 我真的很感激,如果有人知道如何解決這個問題,或者看到有人遇到同樣的問題,可以解決它。

謝謝。

Manifest.xml(真正的服務器名稱由於保密原因而被交換為“ourServer”。)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>

有兩種可能:函數未成功執行,或者特定的“重定向”代碼正在運行但沒有達到預期的效果。 既然您提到代碼正在從任務窗格中運行,那么這個答案將涵蓋第一種可能性。

“進行中”通知消息表示在執行的函數結束時未調用event.completed()。 第一步是驗證是否定義了event.completed(),然后逐步執行代碼以確保函數成功運行。 您還可以嘗試調用notificationMessages API以查看消息中的可見效果。

本文檔描述了如何在清單中實現FunctionName定義的函數。 對於異步代碼,應該在回調中實際調用event.completed()。

調試無UI的加載項很棘手,因為F12調試器只會在加載項運行后附加。 您可以使用Fiddler來驗證.html是否正在成功加載(這可以幫助排除證書錯誤)。 如果需要,您可以附加Visual Studio腳本調試器,它應該保持連接在插件執行之間(為此,調用event.completed()非常重要,否則第二次執行將排隊,等待第一次執行完成)。

確定問題如下(至少在word桌面中)。

1)命令和任務窗格適用於不同的javascript上下文。 即命令窗格中運行的功能無法訪問任務窗格。

2)命令功能區無記憶。 每次單擊按鈕時,它們都會啟動一個新的無頭js上下文。

3)因為它無頭,所以無法打開新窗口。

4)由於功能區與任務窗格斷開連接,因此任何window.location更改嘗試都不會重定向任務窗格。

我通過使用websocket從服務器上彈出命令來“解決”這個問題。 是。 認真。

順便說一句,Websocket是我驗證按鈕確實工作的方式。 即使我對重定向的工作方式有誤,這也是一個非常有用的調試工具,因為f12調試器無法附加到命令功能區。

請使用巨型充氣錘為我“設計”這個頭部的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM