我已定义了多个过滤视图,并希望在Google工作表脚本中应用其中一个预定义过滤视图。
答案 0 :(得分:2)
这是一项长期存在的功能请求。但是,您的问题中没有可供审核的代码。
https://code.google.com/p/google-apps-script-issues/issues/detail?id=524
<强>更新强>
与过滤器相关的Apps脚本中添加了三项附加服务: Class Filter和Range.createFilter,Sheet.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);
}