【问题标题】:Microsoft O365 cached Add-In - Office.context.mailbox.item is nullMicrosoft O365 缓存加载项 - Office.context.mailbox.item 为空
【发布时间】:2021-02-19 12:06:43
【问题描述】:

我在开发 O365 插件时遇到了一个阻止程序。

Windows 桌面 O365 问题:在撰写设置中首次打开我的加载项时,我可以访问 Office.context.mailbox.item,但是所有内联的“回复”和“全部回复”都有我缓存的加载项。对于这个缓存的加载项ItemChanged,除非我们稍等片刻,否则异步事件无权访问Office.context.mailbox.item。 IE。 Office.context.mailbox.itemundefined

总而言之,缓存的插件提供了一个复杂的问题。 ItemChanged 显示用户何时更改电子邮件。但是,如果我无法访问item,我该怎么办?

我想我也会提到所有弹出的“回复”和“新消息”按预期工作,并且所有 OWA 都符合上述逻辑。

有没有其他人遇到过这个问题,或者在撰写设置中的加载项缓存后,是否有某种解决方法可以重新建立邮箱项目?

在我的 compose 插件中运行的代码:

export class BaseModule {
       constructor() {}
       
    Office.context.mailbox.addHandlerAsync( Office.EventType.ItemChanged, 
    (eventType) => { console.log(Office.context.mailbox.item.itemId) } 

}

【问题讨论】:

  • 你能分享你用来测试这个/看到这个行为的 Outlook 内部版本号吗?您能否详细说明重现此问题的步骤以及您所看到的似乎已损坏的行为。
  • 当然@OutlookAdd-insTeam-MSFT,我继续编辑了一些看起来令人困惑的描述。我的内部版本号是:2012 版(内部版本 13430.20000) 重现: 1. 撰写“回复”(不是弹出窗口) 2. 请求 Office.context.mailbox.item(您将在第一次通话中收到) 3. 单击“回复”不同的电子邮件 4. 请求Office.context.mailbox.item(这将为空)
  • 您能否进一步说明您的情况。 “缓存加载项”是什么意思?你在固定你的加载项吗?
  • 啊,是的,抱歉,一旦您固定加载项,它将缓存,除非该操作弹出。
  • 只是为了澄清您的复制,Office.context.mailbox.item 在您的第 4 步中只是短暂地为空?如果是这样,则所描述的行为与 Windows 中的 Outlook 桌面的行为方式一致。当您在项目之间切换、取消选择项目或选择项目标题时,Office.context.mailbox.item 可以为空。您能否描述一下您想要采取哪些行动,而这个问题阻止您执行?

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


【解决方案1】:
 let timer = setInterval(getOfficeItem, 1000);
 function getOfficeItem {
     if (Office.context.mailbox.item) {
        // Your logic
        clearInterval(timer);
     }
  }

上面是我能够想出的一段代码,用于在 ItemChanged 事件中等待 Office item

更新:这似乎已针对回复而非草稿进行了修复。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2020-06-24
    • 2019-12-04
    相关资源
    最近更新 更多