我正在尝试使用脚本对仅在Google表格中使用切片器的未过滤行执行某些操作。我无法正常工作。
我已经尝试过了:
Logger.log(SpreadsheetApp.getActiveSheet().isRowHiddenByFilter(1));
即使使用切片器(Google表格中的新功能)隐藏了行,我也会得到“假”消息。
有人工作吗?
编辑:它与常规过滤器,语法,功能参数中的已编辑行号一起使用。将短语过滤器控件(从挪威语直接翻译)替换为切片器,这是该功能的正确英文名称。
答案 0 :(得分:1)
isRowHiddenByFilter()
。如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。
通过the update of Google side at November 6, 2019,添加了Class Slicer。这样,电子表格Slicer必须能够使用Google Apps脚本进行管理。
在这个答案中,我想提出使用类切片器使用isRowHiddenByFilter()
的方法。
不幸的是,即使添加了类切片器,isRowHiddenByFilter()
也不能直接用于切片器。因此,使用以下流程作为解决方法。
isRowHiddenByFilter()
可用于创建的基本过滤器。在这里,作为测试用例,请在电子表格的一张纸上手动创建新的Slicer。此示例脚本假定活动工作表中仅放置了一个Slicer。
选择(单击)将当前过滤器设置为默认设置后,将保存“切片器”的设置。请通过选择将当前过滤器设置为默认设置来保存切片器的设置。您可以在下图看到将当前过滤器设置为默认过滤器。
如果未选择将当前过滤器设置为默认值,则不会保存当前切片器的设置。请注意这一点。官方文档可以在here上看到。
运行myFunction()
的功能时,可以使用isRowHiddenByFilter()
来检索活动工作表上的Slicer的过滤值。
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var slicer = sheet.getSlicers()[0];
var range = slicer.getRange();
var filter = range
.createFilter()
.setColumnFilterCriteria(
slicer.getColumnPosition(),
slicer.getFilterCriteria()
);
var result = range.getValues().filter(function(_, i) {
return !sheet.isRowHiddenByFilter(i + 1);
});
filter.remove();
Logger.log(result);
}
return !sheet.isRowHiddenByFilter(i + 1);
修改为return sheet.isRowHiddenByFilter(i + 1);
时,可以检索隐藏的行。