Excel 来自现有 Web 服务的 JS 插件

Excel JS Addin from existing web service

我正在尝试开发一个 Excel 加载项,其中包含自定义函数和一个与现有远程 Web 应用程序交互的任务窗格,我向其中添加了加载 OfficeJS 和我的自定义函数的页面。该服务在登录后使用基于 cookie 的会话身份验证。在我的自定义公式中使用的 fetch 请求中进行身份验证的最简单方法是什么?我是否必须使用 Office 对话框 API 进行身份验证?我可以直接在任务窗格中进行本地登录 - 为什么我需要使用 Office 对话框 API?

一旦我有一个有效的经过身份验证的浏览器会话,我是否可以在共享运行时中使用该会话来自动验证我的自定义函数发出的 ajax 请求?我试图让一个共享运行时来测试这个,但无济于事。我的清单有效,加载项将通过侧载安装,任务窗格将加载,但是当我执行自定义函数时,共享运行时尝试启动然后超时,运行时日志中没有错误消息。

对于评论中的每个对话,要对 Excel 加载项或自定义功能使用基于 cookie 的身份验证,您需要使用共享运行时。您可以通过将 Runtimes 元素添加到您的清单中进行配置,并为您想要共享的所有组件使用相同的资源 ID/page,在本例中将是您的任务窗格和您的自定义函数。

<VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
  <Hosts>
    <Host xsi:type="Workbook">
      <Runtimes>
        <Runtime resid="ContosoAddin.Url" lifetime="long" />
      </Runtimes>
      ...

      <Page>
          <SourceLocation resid="ContosoAddin.Url"/>
      </Page>
...

可以在此处找到详细的演练:https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/share-data-and-events-between-custom-functions-and-the-task-pane-tutorial