使用 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));
}
我想使用 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));
}