如何在自定义函数运行时中按环境配置函数?

问题描述 投票:0回答:1

我们正在尝试在“定制功能”运行时中动态确定执行环境,以设置一组环境变量。我们在多个环境中执行自定义函数:

  • 本地
  • 登台
  • qa
  • 生产

我们希望避免在每个环境中生成单独的捆绑包。相反,我们想生成一个捆绑包,并确定在运行时在哪个环境中执行。例如,这将使我们能够为支持我们功能的后端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. 如果没有,您是否建议使用其他方法将表示当前环境的值传递给自定义函数?

提前感谢。

javascript ms-office office-js custom-functions-excel
1个回答
0
投票

您不应该在平台上(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

© www.soinside.com 2019 - 2024. All rights reserved.