标签: office-scripts

在 Visual Studio Code 中编辑 Office 脚本

我希望能够在 Visual Studio Code 中编辑我的 Office 脚本。我知道,我可以将我的脚本从 VS 粘贴并复制到 Office 脚本编辑器,反之亦然。但是,我认为,能够使用 VS 从 OneDrive 直接打开、编辑和保存我的脚本会更舒服。

所以我的问题是,你知道有什么插件或方法可以让 VS 读取 OSTS 文件并在保存回来时重新编码为 JSON 吗?

最好的,穆拉德

office-scripts

9
推荐指数
1
解决办法
3168
查看次数

通过 MS Excel WebApp 中的 Office 脚本进行单元格事件侦听器

在 Excel WebApp (Office 365) 中,可以通过“自动化”选项卡放置 Office 脚本,该选项卡使用 JavaScript 语法,可以像 VBA 宏一样自动执行 Excel,但适用于 Excel WebApp(屏幕截图)。

如何为特定单元格(如单元格:A1)创建事件侦听器?
(一种情况是:如果单元格:A1 的内容/值发生更改,则在单元格:B1 中写入一些内容)

打开 Office-scripts-code-editor 的 Excel Web 应用程序的屏幕截图

javascript excel office365 office-scripts

6
推荐指数
1
解决办法
2396
查看次数

如何在Office脚本中调用另一个脚本?

有没有办法在office脚本中调用另一个脚本?一直试图在单个脚本中将其他函数调用到我的主函数中,虽然它确实在调用该函数,但由于某种原因,该函数的条目不会执行,所以我想尝试调用另一个脚本

谢谢

office-scripts

5
推荐指数
1
解决办法
2723
查看次数

Office 脚本错误 - 该属性不可用

我在 Excel 网页版中使用新的 Office 脚本创建了一个脚本。该脚本只是设置当前工作表中某个范围的填充颜色,获取使用的范围,然后尝试将该范围的地址写入控制台。

async function main(context: Excel.RequestContext) {
  let workbook = context.workbook;
  let worksheets = workbook.worksheets;
  let selectedSheet = worksheets.getActiveWorksheet();
  selectedSheet.getRange("B3:E6").format.fill.color = "E2EFDA";

  // write used range to console
  let usedRange = selectedSheet.getUsedRange();
  usedRange.load("address");
  context.sync();
  console.log("used range = " + usedRange.address);
}
Run Code Online (Sandbox Code Playgroud)

运行此脚本会生成以下错误消息:

The property 'address' is not available. Before reading the property's value, call the load method on the containing object and call "context.sync()" on the associated request context.

似乎我已经按照错误消息指导的建议进行操作 - 即调用方法load来加载address属性,然后 …

excel office-scripts

4
推荐指数
1
解决办法
881
查看次数

如何使用 Office 脚本删除表中的所有行

我的电子表格中有一个表格,我想删除所有现有数据。我使用下面的代码,除非表格已经为空,否则该代码有效。

// Get the row count
let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();

// Delete all the rows
table.deleteRowsAt(0,rowCount);
Run Code Online (Sandbox Code Playgroud)

问题是即使表为空,rowCount 也会返回 1。当deleteRowsAt尝试删除空表中的行时,它会返回错误。

在 VBA 中我们可以使用table.ListRows.Count,如果表为空,这将返回 0。

示例:我的表中有 3 行 在此输入图像描述

如果我选择所有行并将它们从表中删除,我会得到以下结果: 在此输入图像描述

该表现在没有行,但我无法获得此结果。正如我所说,在 VBA 中我们将使用table.ListRows.Count它,这将返回 0,但我似乎找不到 Office 脚本的等效项。

office-scripts

4
推荐指数
1
解决办法
1万
查看次数

Office 脚本 VS 脚本实验室

我对 Office 脚本和脚本实验室感到困惑。

两者都可以javascript在Excel中运行,但似乎代码不能在它们中共享。

对于 Office 脚本,一些代码如

function main(workbook: ExcelScript.Workbook) {
  // Set fill color to FFC000 for range Sheet1!A2:C2
  let selectedSheet = workbook.getActiveWorksheet();
  selectedSheet.getRange("A2:C2").getFormat().getFill().setColor("FFC000");
}
Run Code Online (Sandbox Code Playgroud)

对于脚本实验室,代码是

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getActiveWorksheet();
    sheet.tables.add("B2:E5", true);
    await context.sync();
});
Run Code Online (Sandbox Code Playgroud)

workbook不同之处在于ExcelScript.Workbookcontext.workbook

javascript excel typescript scriptlab office-scripts

4
推荐指数
1
解决办法
1841
查看次数

How can I speed up my Office Scripts code so that it doesn't fail in Power Automate?

I have been asked to pull data from an Excel online spreadsheet on Sharepoint into Power BI to create a dashboard - no problem, right? Well, one of the 'data points' is actually fill colour of the cell indicating status. I did some googling and managed to write an Office Script that translates the fill colour to the status and got everything to work but I was still running the Office Script manually (and it was taking 3 hours to …

power-automate office-scripts

3
推荐指数
1
解决办法
1544
查看次数

如何使用 Office 脚本自动进行数据透视表过滤?

我正在尝试在 Office 脚本中重建一些 VBA 代码,因为我想通过 Microsoft Power Automate(以前的 Flow)自动执行。现在,我的处理数据透视表的代码部分遇到了问题。在 VBA 代码中,我使用:

    Dim oWSHilfsPivot As Worksheet
    Set oWSHilfsPivot = ActiveWorkbook.Sheets("Hilfs_Pivots")

    With oWSHilfsPivot.PivotTables("PivotTable1").PivotFields("Projekt")
         .PivotItems("(blank)").Visible = True
    End With
Run Code Online (Sandbox Code Playgroud)

自动过滤数据透视表: Excel_屏幕截图_数据透视表

如何在 Office 脚本中重建过滤?当我尝试使用集成的 Office 脚本记录器记录它时,我得到:

function main(workbook: ExcelScript.Workbook) {
   // Unknown event received with eventId:153
}
Run Code Online (Sandbox Code Playgroud)

因此,默认情况下,Office 脚本似乎还不支持此功能。当然,变量的定义有效,过滤是问题所在。;)

我很感激任何帮助。

vba pivot-table office365 office-scripts microsoft365

1
推荐指数
1
解决办法
1774
查看次数

从 Office 脚本创建新工作簿

我想从 Office 脚本创建一个新的 Excel 工作簿。是否可以创建一个新的工作簿并在 Office 脚本本身中为其指定一个动态名称(日期)?

excel office-scripts

1
推荐指数
1
解决办法
3520
查看次数

在 Excelscript for web 中快速迭代范围

我想检查一系列单元格是否为空或其中包含任何值,我使用以下命令for loop

for (let i = 0; i <= namesRange.getCellCount(); i++) {
  if (namesRange.getCell(i,0).getText() == "") 
    {
      break;
    }
  bookedCount += 1;
}
Run Code Online (Sandbox Code Playgroud)

然而,这个迭代非常慢(与 的使用一样Range.getValue,但控制台会警告您迭代.getValue很慢,而不是警告您getText)。迭代一个包含 10 个元素的非常短的列表需要几秒钟的时间。

有没有办法使用 ExcelScript 快速检查单元格的值?

这是否意味着,即使我使用 office.js 和 Node.js 开发 UDF 或功能区加载项,迭代单元格的速度也会非常慢?

有什么办法可以让它更快吗?

javascript excel scripting office365 office-scripts

1
推荐指数
1
解决办法
7077
查看次数

Office 脚本中 while 循环的奇怪行为

我使用以下代码来更新单元格 A1 但它不起作用:

function main(workbook: ExcelScript.Workbook) { 

    let worksheet = workbook.getWorksheet("Sheet1");
    var i: number = 0; 

    while (true) {
        worksheet.getRange("A1").setValue(i);
        i = i + 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

代码运行时什么也没发生。

但是,如果我添加不相关的行

console.log("abc")
Run Code Online (Sandbox Code Playgroud)

在循环的末尾,如下所示:

function main(workbook: ExcelScript.Workbook) { 

    let worksheet = workbook.getWorksheet("Sheet1");
    var i: number = 0; 

    while (true) {
        worksheet.getRange("A1").setValue(i);
        i = i + 1;
        console.log("abc");
    }
}
Run Code Online (Sandbox Code Playgroud)

一切都会顺利进行。

那么,这里到底发生了什么?

excel typescript office-scripts

0
推荐指数
1
解决办法
892
查看次数