如果无法加载所需的资源,是否可以防止我的 Excel OfficeJS 加载项从功能区中消失?

Prevent my Excel OfficeJS Add-In from disappearing from the Ribbon if it fails to load a required resource?

提问人:Mitchell Brooks 提问时间:11/16/2023 最后编辑:Mitchell Brooks 更新时间:11/16/2023 访问量:22

问:

我在内部 Excel OfficeJS 加载项中遇到了一种特殊的故障。

失败的原因是,如果 Excel 无法加载加载项资源,则会从功能区中删除该加载项,并且如果不重新启动 Excel,则无法使用或重新添加该加载项。

如果用户在未连接到 VPN 的情况下尝试使用加载项,则会特别发生这种情况。即使它们已连接到 VPN 并且可以访问加载项资源,也无法在不重新启动 Excel 的情况下使用加载项或将其还原到功能区。

理想的行为是,即使 Excel 无法加载资源,该图标也会保留在功能区中,并且每次用户尝试访问资源时,它都会对资源进行新的查询。

有没有办法实现这种行为?是在加载项清单中,还是在 Excel 中,还是在 ActiveDirectory 或 Office 365 配置中?还是其他方式?

下面的上下文转储,在太多上下文方面犯了错误:

加载项清单通过 Office 365 集成应用集中部署到我们的组织。

应用程序本身是一个静态的单页 e React 应用程序托管在我们自己的 (Apache) Web 服务器上的子目录中。

网络服务器只能通过我们的内部 VPN 访问。我们不发布 DNS 记录。

Web 服务器的位置是我们组织根域的内部子域的子域,例如

ourwebapp.subdomain-only-accessible-on-vpn.public-facing-website.tld

但我们只使用子域来引用它,例如

ourwebapp/add-in-subdirectory/index.html

并依靠我们集中配置的DNS后缀搜索列表来正确解析DNS(这很好用,如果我们使用完全限定的域名,我们会遇到单独的、不相关的证书问题)。

该位置在清单中指定为 。SourceLocation

当 Excel 启动时,如果用户不在 VPN 上,加载项将无法解析 的地址,并且(显然)无法下载应用程序的资源。(值得注意的是,这是一个不可解析的域,我不知道这是否会产生与返回 4xx 错误的可解析域不同的行为)。SourceLocation

应用程序的图标(以及所有其他静态资产)也托管在 Web 服务器上。

我尝试将图标资产移动到公共 URL,但仍然看到相同的行为。

加载项使用自定义函数,这些函数也托管在 Web 服务器上。

Excel 在右下角显示“安装加载项时出错”工具提示,提示“一个或多个加载项无法下载所需的资源”。

发生这种情况后,加载项图标将从功能区中消失,如上所述。即使浏览并单击加载项图标上的“添加”,也无法将图标还原到功能区或还原功能(即使是自定义函数等非任务窗格功能)。Add-Ins > Get Add-Ins > Admin Managed

如果我在使用 VPN 后重新启动 Excel,图标将(通常)自动重新出现在功能区中,尽管我们收到了一些用户的报告,他们必须去 Office 加载项对话框的“管理员管理”部分重新添加它。

正如我所提到的,理想的行为是,即使在下载资源时出错后,图标也不会消失,并且可以正常恢复。有没有办法实现这种行为,或者以其他方式改变我们的方法,这样对用户来说就不会那么痛苦了?

是否可以为清单中指定的资源指定回退,并且类似的东西可以解决问题?

Error message

Office365 Office-JS 办公室加载项 excel-addins

评论

0赞 FreeSoftwareServers 11/16/2023
当您将图标移动到公共 URL 时,是否正确?不过,老实说,我认为如果图标失败并且只显示“blueboxes”图标,加载项会继续前进。我可以想到一些解决方法,比如基本上,你必须托管一些公开可用的东西,它会以某种方式重定向应用程序以在可用时使用 VPN,如果没有,它会显示类似httpsare you connected to VPN?
0赞 FreeSoftwareServers 11/16/2023
只是好奇,您使用的是 Excel 现有功能区还是自定义功能区组?
0赞 Mitchell Brooks 11/16/2023
我认为你是对的,@FreeSoftwareServers我已经在功能区中看到了“blueboxes”图标,如果图标没有加载,所以这可能不是问题。(这是一个 https 域)。我将尝试托管所有必要资源的公共版本,这些资源将相应地获取/重定向,如果用户在VPN上。好主意,谢谢!当前使用现有功能区,您认为使用自定义功能区部分可能会有所不同吗?
0赞 FreeSoftwareServers 11/17/2023
我相信,您甚至可以从加载项中操作功能区。因此,清单可以指向公共服务,然后如果 VPN 可用,请在加载后从加载项调整功能区?只是一个想法。关于色带定位,它不应该,但你知道它是怎么回事,这并不意味着它不会有效果,哈哈。

答: 暂无答案