问题标签 [custom-functions-excel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
424 浏览

excel - 使用自定义函数调用 Excel API

我正在尝试从 Excel.js API 创建一个自定义函数调用方法。我遵循了Excel 自定义函数教程
但是我总是#VALUE!在工作表上得到错误值,调试时出现这个错误:

我正在使用以下代码:

对于描述文件:

js源码:

和html:

谢谢您的帮助 !

0 投票
0 回答
50 浏览

office365 - 可以在 Excel 加载项中创建隐藏的自定义公式

是否可以在 Excel 加载项中创建隐藏的自定义公式?这样当用户键入此公式时,Excel 不会显示提示,但公式存在。也许函数元数据中有一个属性,例如@hidden?

0 投票
0 回答
76 浏览

excel - Excel 加载项:Excel.CustomFunctionDimensionality.matrix 不是可识别的类型

因此,我正在尝试创建一个将范围作为参数的自定义函数,并且我在此处遵循示例:https ://docs.microsoft.com/en-us/office/dev/add-ins/ excel/custom-functions-parameter-options?tabs=javascript#range-parameters - 根据这一点,传递一个范围应该将数据作为二维矩阵传递,这将是理想的。

但是,我使用的是 TypeScript,它似乎Excel.CustomFunctionDimensionality.matrix(这是指南所说的类型)不是有效类型。事实上,它甚至找不到“CustomFunctionDimensionality”(我在文档的其他任何地方都找不到对它的引用)。我试过使用any[][],但这似乎不起作用。无论哪种方式,我都会得到#CALC!尝试传递范围时出错,由于“不可提升的数组”,我认为这是因为它不知道范围是我的函数的有效数据类型,但我不确定。

作为一种解决方法,我让这个参数成为一个字符串,并将范围地址作为字符串传递,并在我的函数中手动获取数据,但这很笨重且违反直觉,所以我真的很想解决这个问题.

对于上下文,我的函数声明如下所示:

export function distinct(range: string | any[][]): Promise<number>

0 投票
1 回答
252 浏览

office-js - 是否有可能从 Excel 自定义函数返回真正的空白值?

我正在尝试编写一个 Excel 自定义函数,该函数返回一个包含时间戳和值的动态数组。在某些情况下,时间戳可能没有值。在这种情况下,我希望动态数组中的值真正为空白。我需要这个,因为我想使用动态数组中的数据创建一个图表,只要我返回''null为一个空单元格,Excel 将其解释为 0 并且图表看起来不正确(我希望图表插入有空白单元格时的数据)

0 投票
0 回答
79 浏览

office-js - 自定义函数 JS 文件在 Excel 的生产插件缓存中保留多长时间?

我最近对自定义函数 JavaScript 文件进行了更改,并将其上传到我们的测试环境。此更改不涉及更改任何现有自定义函数的签名,也不会添加任何新函数。加载项通过 AppSource 发布和下载。但是,它是为开发而侧载的。我使用此处提供的技术来清除缓存。

  1. 安装 Microsoft Edge 开发工具。
  2. 在 Office 客户端中打开加载项。
  3. 运行 Microsoft Edge 开发工具。
  4. 在 Microsoft Edge DevTools 中,打开“本地”选项卡。您的加载项将按其名称列出。
  5. 选择加载项名称以将调试器附加到加载项。当调试器附加到您的加载项时,将打开一个新的 Microsoft Edge DevTools 窗口。
  6. 在新窗口的网络选项卡上,选择清除缓存按钮。

此过程适用于我们的暂存环境进行测试。但是,新版本在我们的生产服务器上发布,我们的测试表明 Excel 仍在运行旧的自定义函数 JS 文件。我认为它已被缓存。

以下是从我们的服务器发送的相关标头:

这个缓存会持续多久?另外,我可以使用 HTTP 标头或其他一些机制来控制缓存的过期吗?

0 投票
1 回答
157 浏览

excel - 如何从 Windows 上的自定义函数访问 Excel API?

我正在尝试以类似于此处描述的方式在我的自定义函数中使用 Excel API 。

它在 Excel 的 Mac 版本和 Web 版本上运行良好,但在 Windows 版本上不起作用。

在 Windows 上,reference error Excel is not defined当自定义函数尝试使用var context = new Excel.RequestContext();.

我怎样才能让它在 Windows 上工作?

0 投票
0 回答
120 浏览

office-js - Scriptlab自定义函数获取TypeError:进行GET api调用时网络请求失败

当我使用邮递员提出请求时,它可以工作,但在 excel scriptlab 中出错。请任何人都可以指导我进行修复以解决此错误。

0 投票
1 回答
318 浏览

visual-studio-2019 - 使用 Visual Studio 的 Excel Web 加载项自定义函数

我已经使用 VS 2019 创建了 Excel Web Addin 项目,并尝试将自定义函数合并到该项目中。不幸的是,MSDN 上的所有文档都引用了 Yeoman 生成器,所以我不确定 VS 创建的项目是否不支持自定义功能,或者我遗漏了什么?我在 HOST 下添加了以下因素

所有的 URL 都指向我创建的文件

我的 CustomFunction.js 文件内容如下所示:

HTML文件看起来像

我可以成功调试项目,当我运行它时,Excel 打开但没有加载到其中。任何人都可以指出正确的方向吗?

0 投票
1 回答
170 浏览

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

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

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

0 投票
1 回答
69 浏览

excel - 在 Excel 加载项中重新加载自定义函数 - 在线版

我正在使用 Javascript API 开发带有自定义函数的 Excel 加载项。我已按照教程进行操作。

我正在尝试使用 Excel 的 Web 版本进行调试,因为日志记录功能要好得多,但是我发现它永远不会在我的functions.ts文件中注册更改。我可以更改任何其他代码文件(例如。taskpane.ts)并且会立即看到更改,但是每当我尝试重新加载自定义函数时,我看不到任何更改。

我正在使用的命令: 在一个终端npm run buildnpm run watchnpm run start:web在另一个终端中。

无论我是否npm run watch在一个终端中运行,这都是一样的。

为了观察任何更改,我需要完全重新启动整个服务器并重新加载插件。

这造成了相当糟糕的开发体验。有没有人克服过这样的问题,或者对如何改进 Excel 加载项的开发过程有建议?

我也想使用桌面版的 excel 进行开发,但是由于缺乏不错的日志记录功能,这似乎不太可行。