【问题标题】:Hiding columns using office scripts使用 office 脚本隐藏列
【发布时间】:2022-12-29 07:43:22
【问题描述】:
我想使用 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
【解决方案1】:
对于 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));
}
【解决方案2】:
那么,在上述情况下,“密码箱”是工作表“密码箱”中表的名称吗?