繁体   English   中英

如何在 Google 表格中为宏(google-sheets、filter、if、else、script)中的特定激活值空列过滤器使用 if 条件?

[英]How to use if condition for specific activated value empty column filter in Google Sheets for macro (google-sheets, filter, if, else, script)?

我不知道如何仅对 if 条件使用 e 列过滤器。 从 b1 到 e1 有 4 个列过滤器处于活动状态。 如果 e 过滤器为空,我想检查 if 条件。 然后 if 应该被执行,否则 else。 否则清空过滤器。 这是不起作用的代码。

        function myFunction() {
          if (SpreadsheetApp.getActive().getActiveSheet().getRange('E1').getFilter() == null) {
            var spreadsheet = SpreadsheetApp.getActive();
            var criteria = SpreadsheetApp.newFilterCriteria()
            .whenCellNotEmpty()
            .build();
            spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(5, criteria);
            spreadsheet.getRange('E1').activate();
            spreadsheet.getCurrentCell().offset(2, 0).activate();
          }
          else {
            var spreadsheet = SpreadsheetApp.getActive();
            var criteria = SpreadsheetApp.newFilterCriteria()
            .build();
            spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(5, criteria);
            spreadsheet.getRange('B1').activate();
            spreadsheet.getCurrentCell().offset(2, 0).activate();
          }
        }

验证过滤器在 E 列中是否包含ColumnFilterCriteria

修改行

if (SpreadsheetApp.getActive().getActiveSheet().getRange('E1').getFilter() == null) 

  if (SpreadsheetApp.getActive().getActiveSheet().getFilter().getColumnFilterCriteria(5) == null) {

解释:

如果过滤器应用于整个电子表格/数据范围,包括列 E - getFilter() == null)将永远不会得到满足,即使列 E 不存在过滤条件。

相反,您需要使用getColumnFilterCriteria(5)方法,该方法将返回一个过滤条件 o null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM