我们正在尝试在“定制功能”运行时中动态确定执行环境,以设置一组环境变量。我们在多个环境中执行自定义函数:
我们希望避免在每个环境中生成单独的捆绑包。相反,我们想生成一个捆绑包,并确定在运行时在哪个环境中执行。例如,这将使我们能够为支持我们功能的后端API服务器确定适当的URL。
对于我们的任务窗格加载项,我们仅使用window.location.hostname的值来确定当前环境并选择适当的API服务器URL。在Mac上的Excel中的“自定义函数”运行时中执行时,这似乎也按预期工作。不幸的是,当在Windows上的Excel中执行时,在“自定义函数”运行时中未定义窗口对象。
<Resources>
<bt:Urls>
<bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000" />
... ...
</bt:Urls>
</Resources>
提前感谢。
您不应该在平台上(win32,mac,在线,...)或主机(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中具有Preview功能,该功能除其他优点外,还可以使您在浏览器控件中执行自定义功能。看到这篇文章:https://docs.microsoft.com/en-us/office/dev/add-ins/excel/configure-your-add-in-to-use-a-shared-runtime