sheet.isRowHiddenByFilter(n)不能与切片器一起使用吗?

时间:2019-09-03 18:19:50

标签: google-apps-script google-sheets

我正在尝试使用脚本对仅在Google表格中使用切片器的未过滤行执行某些操作。我无法正常工作。

我已经尝试过了:

Logger.log(SpreadsheetApp.getActiveSheet().isRowHiddenByFilter(1));

即使使用切片器(Google表格中的新功能)隐藏了行,我也会得到“假”消息。

有人工作吗?

编辑:它与常规过滤器,语法,功能参数中的已编辑行号一起使用。将短语过滤器控件(从挪威语直接翻译)替换为切片器,这是该功能的正确英文名称。

1 个答案:

答案 0 :(得分:1)

  • 您想对切片器使用isRowHiddenByFilter()

如果我的理解正确,那么这个答案如何?请认为这只是几个答案之一。

通过the update of Google side at November 6, 2019,添加了Class Slicer。这样,电子表格Slicer必须能够使用Google Apps脚本进行管理。

在这个答案中,我想提出使用类切片器使用isRowHiddenByFilter()的方法。

流量:

不幸的是,即使添加了类切片器,isRowHiddenByFilter()也不能直接用于切片器。因此,使用以下流程作为解决方法。

  1. 获取当前的Slicer。
  2. 从切片器中检索范围,列位置和过滤条件。
  3. 使用检索到的范围,列位置和过滤条件创建新的基本过滤器。
    • 在这里,Slicer的过滤器被复制为基本过滤器。
  4. 在这里,isRowHiddenByFilter()可用于创建的基本过滤器。
  5. 删除基本过滤器。

用法

1。在电子表格上创建切片器

在这里,作为测试用例,请在电子表格的一张纸上手动创建新的Slicer。此示例脚本假定活动工作表中仅放置了一个Slicer。

2。重要:切片器的保存设置

选择(单击)将当前过滤器设置为默认设置后,将保存“切片器”的设置。请通过选择将当前过滤器设置为默认设置来保存切片器的设置。您可以在下图看到将当前过滤器设置为默认过滤器

enter image description here

如果未选择将当前过滤器设置为默认值,则不会保存当前切片器的设置。请注意这一点。官方文档可以在here上看到。

3。运行示例脚本

运行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);时,可以检索隐藏的行。

参考