使用 Office 脚本隐藏列

问题描述 投票:0回答:2

我想使用 Excel Online 工作簿的 Office 脚本隐藏某些列。 我使用录音机来创建脚本。 但当我运行它时,却出现了错误。 以下是录制的脚本:

function main(workbook: ExcelScript.Workbook) {
    let lockbox = workbook.getTable("Lockbox");
    // Set visibility of column(s) at range D:P on lockbox to true
    lockbox.getRange("D:P").setColumnHidden(true);
    // Set visibility of column(s) at range R:V on lockbox to true
    lockbox.getRange("R:V").setColumnHidden(true);
    // Set visibility of column(s) at range AB:AB on lockbox to true
    lockbox.getRange("AB:AB").setColumnHidden(true);
    // Set visibility of column(s) at range AE:AO on lockbox to true
    lockbox.getRange("AE:AO").setColumnHidden(true);
}

问题如下,但不明白为什么它不起作用:

[4, 19] Expected 0 arguments, but got 1.
[6, 19] Expected 0 arguments, but got 1.
[8, 19] Expected 0 arguments, but got 1.
[10, 19] Expected 0 arguments, but got 1.
office-scripts excel-online
2个回答
0
投票

对于 Excel 表格,

getRange()
的工作方式与工作表的工作方式略有不同。与工作表不同,表的
getRange()
接受零个参数。这是一个返回与表关联的范围的函数调用。如果使用
getColumn()
函数,您可以获得与列关联的范围。据我所知,Excel 表格的列函数都不支持列字母或一系列列字母。

最简单的解决方法是使用包含表格的工作表。一旦完成,您只需更新隐藏列的代码即可使用工作表而不是密码箱。完成此操作后,代码应该按预期工作。您可以在此处查看如何执行此操作的示例:

    function main(workbook: ExcelScript.Workbook) {
      let lockbox = workbook.getTable("Lockbox");
      let ws: ExcelScript.Worksheet = lockbox.getWorksheet()
      // Set visibility of column(s) at range D:P on lockbox to true
      ws.getRange("D:P").setColumnHidden(true);
      // Set visibility of column(s) at range R:V on lockbox to true
      ws.getRange("R:V").setColumnHidden(true);
      // Set visibility of column(s) at range AB:AB on lockbox to true
      ws.getRange("AB:AB").setColumnHidden(true);
      // Set visibility of column(s) at range AE:AO on lockbox to true
      ws.getRange("AE:AO").setColumnHidden(true);
    }

您还可以合并行以将列隐藏到一行中,如下所示:

    function main(workbook: ExcelScript.Workbook) {
      let lockbox = workbook.getTable("Lockbox");
      let ws: ExcelScript.Worksheet = lockbox.getWorksheet()
      ws.getRanges("A:A,R:V,AB:AB,AE:AO").getAreas().forEach(cols=>cols.setColumnHidden(true));
    }

0
投票

function main(workbook: ExcelScript.Workbook) {
    let sheet = workbook.getActiveWorksheet()
    let table = sheet.getTables()[0]  // table1
    let col = [0, 2, 4]
    col.reverse().forEach(
        i => table.getRange().getColumn(i).delete(ExcelScript.DeleteShiftDirection.left)
    )
}

© www.soinside.com 2019 - 2024. All rights reserved.