1

我们试图在自定义函数运行时动态确定执行环境,以便设置一组环境变量。我们有多个执行自定义函数的环境:

  • 当地的
  • 分期
  • 质量保证
  • 生产

我们希望避免为每个环境生成单独的包。相反,我们希望生成一个单独的包并确定我们在运行时在哪个环境中执行。例如,这将使我们能够确定支持我们功能的后端 API 服务器的适当 URL。

对于我们的任务窗格加载项,我们只是使用 window.location.hostname 的值来确定当前环境并选择适当的 API 服务器 URL。在 Mac 上的 Excel 中的自定义函数运行时中执行时,这似乎也可以按预期工作。不幸的是,在 Windows 上的 Excel 中执行时,窗口对象在自定义函数运行时中未定义。

  1. 是否可以在自定义函数运行时中获取通常可以通过 window.location.hostname 访问的主机名?
  2. 如果没有,我们为每个环境维护一个清单(例如 manifest-local.xml、manifest-staging.xml 等)。是否可以在我的自定义函数逻辑中从应用程序清单中检索值?例如,如果我的清单中有下面的资源部分,我可以在我的自定义函数逻辑中检索 Taskpane.Url 的 DefaultValue 吗?
<Resources>
  <bt:Urls>
    <bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000" />
    ... ...
  </bt:Urls>
</Resources>
  1. 如果没有,您是否会推荐另一种方法将指示当前环境的值传递给自定义函数?

提前致谢。

4

2 回答 2

0

您不应该在平台(win32、mac、online、...)或主机(Excel、Word、...)上进行调整。您应该只关注是否支持 API 版本这一事实,即您应该只使用此 API 来调整您的逻辑:https://docs.microsoft.com/en-us/javascript/api/office-runtime/officeruntime。 apiinformation?view=common-js

如果您发现相同版本的 Mac 和 Win32 实现之间存在差异,请通过在任何 Office 产品(Excel、Word、...)上发送微笑/皱眉报告。

关于您对window对象的观察 - 在 Win32 上,自定义函数在更轻量级的 ReactNative 运行时执行,(我并不感到惊讶)没有window对象。在 Mac 上,自定义功能在浏览器控件中执行,您自然会在其中找到所有浏览器功能。

Excel 中有一个预览功能,除其他优点外,它还允许您在浏览器控件中执行自定义函数。请参阅这篇文章:https ://docs.microsoft.com/en-us/office/dev/add-ins/excel/configure-your-add-in-to-use-a-shared-runtime

于 2020-05-07T19:23:38.173 回答
0

看起来像是Office.context.mailbox.initialData.extensionId从清单文件返回 GUID。如果每个环境有不同的清单/GUID,那应该会给你正在寻找的环境意识。

注意:我没有在initialData任何地方看到该财产的记录,因此请谨慎行事。

于 2021-11-24T16:17:49.963 回答