问题标签 [office-scripts]

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 投票
3 回答
436 浏览

office-js - 如何启用新的同步 Excel Javascript API?

本文说新的简化 Office API 处于“预览”模式。谁可以预览它?预览版什么时候出来(已经快一年了)?它会在 Excel 中在线提供吗?是否需要特殊许可证?我正在使用免费的在线 Excel。

如果我创建一个包含以下内容的脚本:

我只是得到一个错误“找不到命名空间'ExcelScript'。” 我可以通过向“库”选项卡添加一些内容来启用此功能吗?

0 投票
1 回答
230 浏览

excel - 办公脚本中的自定义功能?

在 Excel VBA 中,我创建了以下自定义函数。是否可以在 Excel 脚本中复制它?

0 投票
2 回答
786 浏览

excel - 从 Power Automate 运行的 Excel 脚本失败并出现错误 504

我每天都在使用 PowerAutomate 将数据添加到报告中。数据以 CSV 附件的形式通过电子邮件传入,使用 Azure 函数将其解析为 2D 数组并字符串化为 JSON,然后将其传递给解析 JSON 的 excel 脚本,将行数组截断为正确的宽度,添加公式到计算列的行数组,并使用table.addRows()函数将数据添加到表中。

这发生在来自三个不同报告的三个不同表格上(相隔 30 分钟)。

  • 一个很小,每天添加约 10 行,没有添加公式列,这在 PowerAutomate 中总是很好并且很成功。
  • 第二个是每天约 150 行,添加一个公式列。这总是会成功添加数据,但有时 PowerAutomate 连接器会失败,并显示504 BadGateway - Request to Graph API has timed out
  • 第三个是每天约 150 行,并添加了一些公式列。这通常会失败,要么成功添加日期但返回上述错误,要么添加数据失败并返回我们无法运行脚本。请再试一次。Office JS 错误:第 44 行:表 addRows:请求失败,状态代码为 504,错误代码 UnknownError

这是函数本身(特别是第三个示例):

为了尝试优化这一点,我有

  • 在脚本中,以尽可能少的请求访问工作簿的最少次数
  • .getFormulas()删除了对数组的调用并对其进行硬编码
  • 将 PowerAutomate 超时更改为 P1D 并重试为无
  • 关闭工作簿的重新计算/将计算模式设置为手动(在工作簿级别和脚本本身的开头)

如果我将 JSON 粘贴到函数中并在浏览器中运行它,这 100% 的时间都有效。我无法确定这是由于实际函数超时、PowerAutomate 未能等待足够长的时间以获得结果、Graph API 中的一些超时或其他原因。

工作簿的大小低于 5mb,最常失败的表通常有大约 13.000 行。

编辑:

我要添加的工作簿有这三个表的工作表,还有一些带有分析表的工作表。我还测试了删除不同的工作表、引用等。减速似乎是表中已经存在的公式列,因为只有完全删除这些列才能使函数在每个实例中都成功。现在不是在 90 秒内超时,而是在 8 秒内完成,没有任何问题。为什么这会影响重新计算关闭的速度?

0 投票
1 回答
275 浏览

excel - Excel 脚本:无法读取属性“getRowCount”不适用于 Power Automate

我写了一个简单的 Excel 脚本,它在网上运行得很好,但是如果我将相同的脚本与 Power Automate 一起使用,我会得到一个错误。

这是脚本:

我收到消息:运行时错误第 5 行:无法读取未定义的属性“getRowCount”

有谁知道为什么此消息仅在 Power Automate 中出现以及如何解决?

0 投票
2 回答
166 浏览

excel - ExcelScript:从 A 列到 C 列的 getNumberFormat

我需要从 excel 文件(大约 3000 行)中获取 NumberFormat,然后我编写了一个简单的脚本,将其从 A 列逐行复制到 C 列。10 分钟后,我尝试将此脚本与 Power Automate 一起使用。

我已经将超时设置为 60 分钟,但似乎我的租户配置总是在 10 分钟后中止它。

这是我的脚本:

有没有更简单的方法可以将 NumberFormat 从一列复制到另一列,有人知道更好的方法吗?

0 投票
1 回答
430 浏览

office-scripts - 如何使用 Office 脚本删除表中的列

我有一个表,我希望删除特定列以通过 Office 脚本进行进一步处理。还查看了 API 参考,但我找不到这样做的方法。

我总共有大约 30 列,但想删除几个包含空白行数据的列,之后计划使用getId()getIndex()对减少的列集执行进一步的操作。

我担心的是每个 Excel 文件都没有固定数量的列,也没有特定的顺序,所以我猜使用getColumnByIdorgetColumnByName将是一个挑战。

我能得到的最远的是确定列数,但只是想知道是否有办法实现上述目标。

0 投票
2 回答
674 浏览

onedrive - 将 Excel OneDrive 表复制到另一个 Excel OneDrive 表上的特定单元格 (Power Automate)

我需要使用电源自动化 + Office 脚本从一个 Excel 工作表中复制数据并粘贴(仅限值)到另一个工作表上

我开始使用下面链接中的答案创建一个流程。

Power Automate:将 Excel OneDrive 表复制到另一个 Excel OneDrive 表的底部

问题是我不理解第二个脚本,所以我无法将它修改为我需要的内容(工作簿末尾的那个粘贴)

链接上的脚本

RemoveString 的原因是从输出中删除日期和时间戳

0 投票
1 回答
115 浏览

excel - 共享 Office Online Excel 脚本

我在我的 Office Online 帐户中创建了一个 Excel 脚本。我看到我可以在哪里与每个工作簿的另一个用户共享该脚本,以及在哪里我可以在 .osts 文件本身的管理访问部分中与另一个用户整体共享脚本。

我需要整个用户都可以访问该脚本——而不仅仅是每个工作簿——所以我与第二个用户共享了 .osts 文件。

该用户可以在他们的共享文件中看到该文件,但如果他们打开一个 Excel 文件,它不会在他们的脚本中列出。当他们打开任何工作簿时,我们如何让共享的 .osts 文件出现在“自动化”选项卡中?

0 投票
1 回答
75 浏览

typescript - 问:Office 脚本 - 从列中删除数据

你们能帮帮我吗

我需要将一些 VBA 代码转换为 Office 脚本,我很苦恼,我需要使用某些参数从列中删除数据

这是代码:

如果有人可以告诉我从哪里开始,我会很高兴。

0 投票
1 回答
356 浏览

excel - 如何以正确的方式将 VBA 中的 For 循环转换为 Typescript

我正在尝试将宏 VBA 转换为 Office 脚本(Typescript)以在 Excel Web 中运行

我有这段 VBA 代码:

上下文是:我有一个名为 Projects 的主工作表,然后此循环扫描由名为 Parameters 的工作表确定的列和行并擦除其中的数据

细胞 2,4; 2,5; 2,2; 2,3 只需按列和行告诉他们从哪里开始和在哪里停止

起初我是这样做的:

但我想像 VBA 代码一样自动化“EK3:HL3”,通过参数工作表进行编辑,而不是在代码中手动更改,以防 EK3:HL3 范围变大....

如果你们能照亮我的心灵,我真的很高兴