问题标签 [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 回答
391 浏览

reactjs - 使用 React 在 Office.js 加载项中定义自定义函数

我是使用 Office.js API 的新手。我创建了一个 React 插件项目,现在我正在尝试添加一个自定义函数,它可以像在 Excel 中创建自定义函数中的示例一样简单地添加两个单元格。在本指南中,它说您必须将加载项项目创建为Excel Custom Functions

React所以我的疑问是,如果我创建的加载项项目是类型而不是,我该如何创建自定义函数Excel Custom Functions

0 投票
1 回答
1817 浏览

javascript - Excel JS API:使用自定义函数从单元格中写入、计算和加载值

目的是将公式(自定义函数)写入单元格,计算它,加载值并在单个函数中检索它们。

对于内置 Excel 函数,一切都按预期工作,并consolectx.sync(). 使用自定义函数(向外部服务器发送请求以计算结果)的值为'#GETTING_DATA'. 我之前尝试过以下所有方法rng.load("values");来触发计算,但到目前为止没有任何效果:

  • rng.calculate();

  • var s = ctx.workbook.worksheets.getActiveWorksheet(); s.calculate(true);

  • ctx.workbook.application.calculate('Full');

有没有办法触发自定义函数的计算并确保值在ctx.sync()?

0 投票
1 回答
1105 浏览

javascript - 如何包含外部 JavaScript 以在 Excel 自定义函数中使用?

编辑:在问题结束时添加了简化的场景和重现步骤。请注意,目标是在 Excel-Desktop 上包含外部脚本,而不是通过其他方式使简化的场景工作。


我们都知道并喜欢自定义函数的股票价格示例,其中使用“获取”从源请求最新的股票价格:

https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows#create-a-custom-function-that-从网络请求数据

如果有一个外部 API 来获取股票价格,那也可以使用吗?像这样:

或者换句话说,customfunctions JavaScript 项目是否可以包含外部脚本,例如

我试图在自定义函数项目的 index html 文件中包含这样的引用,在“xsi:type=CustomFunctions”的 AllFormFactors/ExtensionPoint 下的清单中包含脚本 URL,在“Resources/bt:Urls”下添加了脚本引用,以及它们的各种组合,但自定义函数本身似乎并不“知道”脚本(索引 html 文件在加载到浏览器时知道脚本,所以我知道引用是正确的)。我所尝试的都是猜测,因为我没有找到任何关于使用外部 API 的文档。我正试图让它在 Windows 桌面(64 位)上适用于 Excel。

可以做到吗?


编辑/更新:只需在示例项目的“index.html”文件中包含外部脚本,即可确认它适用于 Excel Online。这是否适用于 Excel 桌面?


要重现该问题:

  1. 按照教程创建基本的自定义函数项目(使用 typescript 选项)并确保它们工作(https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-创建自定义功能?tabs=excel-windows

  2. 创建一个 javascript 文件“globalapi.js”并将其放入“dist/win32/ship”文件夹(包含自定义函数 javascript 的同一文件夹)。只需在“globalapi.js”文件中声明一个全局变量,如下所示:

    /li>
  3. 在“index.html”文件中包含“globalapi.js”脚本;包含的所有脚本都是:

    /li>
  4. 修改 'customfunctions.ts' 文件中的 'add' 函数,以便在定义 'someGlobalString' 时返回不同的内容:

    /li>

现在在 Excel 的单元格中输入自定义函数“=CONTOSO.ADD(1,2)”。对于 Excel Desktop(以“npm run sideload”开头),单元格中显示的结果为“3”,对于 Excel Online(加载清单后),结果为“99999”。

如何解释差异?

0 投票
1 回答
254 浏览

javascript - JavaScript Excel 自定义函数的单点登录 (SSO)?

自定义函数 ( https://docs.microsoft.com/en-us/office/dev/add-ins/excel/custom-functions-overview ) 在不同于通常 office-js 运行时的运行时中执行,即任务窗格加载项。任务窗格加载项可以将“Office.context.auth.getAccessTokenAsync”用于 SSO,但据我所知,自定义函数加载项没有可用的此类功能。

我知道自定义函数加载项可以打开一个授权对话框,但这与不需要提示输入凭据的 SSO 不同。

有没有办法在自定义函数加载项中执行 SSO?

0 投票
2 回答
1214 浏览

angular - 具有内置自定义功能的 Angular excel 插件

我正在尝试开始开发 Office 加载项。为简单起见,我将使用公共代码示例。此外,我只测试网络版的 Excel。

因此,我采用了使用 Typescript 的带有 Angular 框架的示例 Excel 插件以及 yo office 提供的带有 typescript 插件的示例自定义函数,我想将它们的功能合并到一个插件中。两个样本在分别测试时都按预期工作。

我从自定义函数加载项中获取了 .ts、.json 和 .html 文件,并将它们放在任务窗格加载项文件夹中。然后我合并了两个加载项的依赖项。最后,我编辑了 manifest.xml,试图遵循 AsyncStorage 示例(https://github.com/OfficeDev/PnP-OfficeAddins/blob/master/Excel-custom-functions/AsyncStorage/)。

任务面板正常工作,但自定义功能不显示。这是我的 manifest.xml

我错过了什么?

0 投票
1 回答
441 浏览

storage - 在现有 Excel 加载项中使用 OfficeRuntime.storage 的问题

我正在尝试在我现有的 Excel 加载项任务窗格和新添加的自定义函数之间共享一些数据。当我尝试设置/获取值时,我得到“未实现:未实现”。错误。

我在我的任务窗格页面中引用了这个包:

我以这种方式在任务窗格中使用存储:

我还在我的加载项中使用 Typescript,所以我添加了

类型的包。我在一些使用 OfficeRuntime.AsyncStorage 的示例中看到过,但我不能使用它,因为它在 IntelliSense 中不可用。

我还想补充一点,我有 Excel 版本 1904(Build 11601.20204)和 Windows 10 版本 10.0.17763 Build 17763

0 投票
1 回答
394 浏览

office-js - 有没有办法在自定义函数中使用 Excel.run()?

由于我的自定义函数,我想填充几个工作表单元格,将调用函数的单元格作为基本单元格。我必须返回一些不适合一个单元格的复杂数据。

所以问题是:有没有办法在自定义函数中使用 Excel.run() ?或者有没有办法返回更复杂的数据(对象、对象数组)作为自定义函数的返回值?

这是我正在尝试做的简单示例,但它不起作用:

0 投票
1 回答
258 浏览

javascript - Excel自定义函数返回数组公式

我想返回多个值或数组公式,而不通过函数在 excel 中进行范围选择。

0 投票
1 回答
91 浏览

office-js - 自定义函数的数据验证列表

是否可以从自定义函数中获取数据验证列表的选项?例如,如果一个函数被定义为

我可以实现以下目标:

在此处输入图像描述

显然,直接答案似乎是“否”,因为它试图将函数解释为命名范围,但我希望我做错了什么。

0 投票
1 回答
30 浏览

javascript - How to make a custom function code for excel to sum the arrays from multiple columns

I'm setting up a google sheet/excel sheet for my mother. To give an example of how she tallies her business goods manually, here below is what she does every day: Hotel1 Hotel2 Total Tomatoes for Hotel (e.g. Tomatoes (1+1+1+4) (1+2+2+1) 13

Note that this is only an example; she tallies more approximately more than 13 hotels, making it an estimate of 11 more columns containing arrays with (+).

To be completely honest, I really want to help her with this by making her works digitalized, wherein she will tally through an excel sheet for less effort. Unfortunately, my skills are limited to simple basic functions. And as for her ability, she can type manually like the one above (e.g. 2+2+4+5). I planned on summing the digits individually and counting the (+) sign as to be read as an addition function but I don't know-how. I really want to help her honestly, I tried my best really but I'm just good with coding. So to any good soul out there who wants to lend a hand, please message me and help me this. I would appreciate it very much.

I tried searching for examples and learning basic standard JavaScript but I can't seem to get a grasp of it

Array (

)

I don't claim that I made this but this is the closest I can find online.

I am too stupid to understand and solve my own problems.