如何设置多个过滤器?

-1 filtering google-apps-script google-sheets-api

我有一个关于将过滤器应用于多个值以使用 Google 脚本隐藏它们的问题。我有一个具有多种状态的项目跟踪器,例如“达到目标”、“已完成”、“已取消”、“已延迟”等。我想编写一个脚本来设置“状态”列的筛选器值,以便标记为“已完成”或“的行”已取消”被隐藏。我编写了下面的代码片段来隐藏“已完成”状态,如何向其中添加“已取消”?感谢您的帮助。

//Below code has been written to hide rows with status = Completed. 
//I'd like to modify it to hide rows with status = Completed AND rows with status = Canceled.

function SetFilters() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var ssId = spreadsheet.getId();
var sheet = spreadsheet.getSheetByName("Project Tracker");

var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var sheetId = sheet.getSheetId();

var filterSettings = {
  "range": {
    "sheetId": sheetId,
    "startRowIndex": 0,
    "endRowIndex": lastRow,
    "startColumnIndex": 0,
    "endColumnIndex": lastColumn
  }
};

filterSettings.criteria = {};
var columnIndex = 2;
filterSettings['criteria'][columnIndex] = {
  'hiddenValues': ["Completed"]
};

var requests = [{
  "setBasicFilter": {
    "filter": filterSettings
  }
}];
Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
Run Code Online (Sandbox Code Playgroud)

}

The*_*ter 5

无需使用高级表格服务。我们可以使用可用的Filter 类

function setFilters() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Project Tracker");
  var rang = sh.getDataRange();
  var filtercriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(["Completed","Cancelled"]).build();//used Cancelled NOT Canceled; Create criteria with two hidden values
  var filter = rang.getFilter() || rang.createFilter();// getFilter already available or create  a new one
  filter.setColumnFilterCriteria(2, filtercriteria);//set the criteria against Col2 (B column)
}
Run Code Online (Sandbox Code Playgroud)