使用 office 脚本隐藏列

Hiding columns using office scripts

我想使用 Excel 在线工作簿的 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.

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

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

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));
}