如何在工作表脚本中设置过滤器视图?

时间:2015-04-22 00:19:33

标签: google-apps-script filter google-sheets

我已定义了多个过滤视图,并希望在Google工作表脚本中应用其中一个预定义过滤视图。

2 个答案:

答案 0 :(得分:2)

这是一项长期存在的功能请求。但是,您的问题中没有可供审核的代码。

https://code.google.com/p/google-apps-script-issues/issues/detail?id=524

<强>更新

与过滤器相关的Apps脚本中添加了三项附加服务: Class FilterRange.createFilterSheet.getFilter

答案 1 :(得分:0)

在下面的示例中,使用简单条件TRUE / FALSE来过滤工作表的视图,即,如果单元格中的值为FALSE,则该行将被隐藏。 因此,显然您有两个功能,setFilter和clearFilter。 用最原始的方式,看起来像这样:

function setFilter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var filterSettings = {};

  // The range of data on which you want to apply the filter.
  // optional arguments: startRowIndex, startColumnIndex, endRowIndex, endColumnIndex
  filterSettings.range = {
    sheetId: ss.getSheetByName("sheetName").getSheetId() // provide your sheetname to which you want to apply filter.
  };

  // Criteria for showing/hiding rows in a filter
  // https://developers.google.com/sheets/api/reference/rest/v4/FilterCriteria
  filterSettings.criteria = {};
  var columnIndex = 9; // column that defines criteria [A = 0]
  filterSettings['criteria'][columnIndex] = {
    'hiddenValues': ["FALSE"]
  };

  var request = {
    "setBasicFilter": {
      "filter": filterSettings
    }
  };
  Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}

function clearFilter() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = ss.getId();
  var sheetId = ss.getSheetByName("sheetName").getSheetId();
  var requests = [{
    "clearBasicFilter": {
      "sheetId": sheetId
    }
  }];
  Sheets.Spreadsheets.batchUpdate({'requests': requests}, ssId);
}
相关问题