Google apps script 如何仅在单元格不为空时激活筛选器?

Google apps script 如何仅在单元格不为空时激活筛选器?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,下面是在编辑单元格“B2”时激活并创建筛选器的脚本。 但我想添加一个clear函数,在单元格“B2”为空时清除所有过滤器。 当单元格“B2”不为空时,此脚本应起作用: function onEdit(e){ var sheetName = "Sheet1"; var editCell = "B2"; var range = e.range; var sheet = range.getSheet(); if (range.getA1No

下面是在编辑单元格“B2”时激活并创建筛选器的脚本。 但我想添加一个clear函数,在单元格“B2”为空时清除所有过滤器。 当单元格“B2”不为空时,此脚本应起作用:

function onEdit(e){
  var sheetName = "Sheet1";
  var editCell = "B2";

  var range = e.range;
  var sheet = range.getSheet();
  if (range.getA1Notation() == editCell && sheet.getSheetName() == sheetName) {
    updatefilter(sheet);
  } else {
    // do something
  }
}

function updatefilter(sheet) {
  sheet.getRange('B3').activate();
  var criteria = SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied("=(B3:B=$B$2)").build();
  var filter = sheet.getFilter();
  if (!filter) {
    filter = sheet.getRange("A3:H").createFilter();
  }
  filter.setColumnFilterCriteria(2, criteria);
};
当单元格为空时,您知道如何添加“全部清除”过滤器吗

这是一个电子表格的工作链接-

说明: 您可以添加一个
if
条件,以检查用户是否删除了
B2
的当前值,或者是否将其替换为非空的

  • 如果用户将
    B2
    的值替换为非空值,请执行
    updatefilter
    功能

  • 如果用户删除了当前值
    B2
    ,请清除
    表1
    中的过滤器

解决方案:
如果该函数能够正常工作,那么它将只适用于用户编辑,并且只执行不需要权限的函数请在问题中发帖,NoCode=>NoHelp
function onEdit(e){
  var sheetName = "Sheet1";
  var editCell = "B2";

  var range = e.range;
  var sheet = range.getSheet();
  if (range.getA1Notation() == editCell && sheet.getSheetName() == sheetName) {
     
     // *** New code starts ***
     if(e.range.getValue()!=''){
        updatefilter(sheet);
     }
     else {
        sheet.getFilter().remove();
     };
     // *** New code ends***
}
}

function updatefilter(sheet) {
  sheet.getRange('B3').activate();
  var criteria = SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied("=(B3:B=$B$2)").build();
  var filter = sheet.getFilter();
  if (!filter) {
    filter = sheet.getRange("A3:H").createFilter();
  }
  filter.setColumnFilterCriteria(2, criteria);
};