我在为Google表格编写脚本方面是完全陌生的,所以我希望你们中的一些人能对我有所帮助/指导。
因此,理想情况下,我希望脚本清除(而不是删除)工作表中的所有过滤器。但是,这对我来说很复杂(如果你们中的某些人有这样的脚本,我希望看到它:))
相反,我做了这个(二手录音机):
function Clear_Filter() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(1);
spreadsheet.getRange('B5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(2);
spreadsheet.getRange('C5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(3);
spreadsheet.getRange('G5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(7);
spreadsheet.getRange('J5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(10);
spreadsheet.getRange('M5').activate();
spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(13);
};
所以我的过滤器设置在第5行中。首先,我对所有列进行了上述设置(我有20个),但是问题是,代码非常慢:(所以现在我使用的是列,最多的时候是过滤,但是代码仍然很慢,最糟糕的是,代码一次运行一列(我们在代码中看到),而当代码完成时,我最终进入最后一列。
我可以做点什么吗?我不希望我的工作表窗口在运行代码时继续向右转,然后在M列结束。
我将不胜感激! 谢谢
答案 0 :(得分:0)
我,你尝试过吗:
function Clear_Filter() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getFilter().remove();
}
答案 1 :(得分:0)
这是我的。该功能不会删除过滤器。而是按要求清除它们。
function clearFilter(sheet) {
sheet = SpreadsheetApp.getActiveSheet(); //for testing purpose only
var filter = sheet.getFilter();
if (filter !== null) { // tests if there is a filter applied
var range = filter.getRange(); // prevents exception in case the filter is not applied to all columns
var firstColumn = range.getColumn();
var lastColumn = range.getLastColumn();
for (var i = firstColumn; i < lastColumn; i++) {
filter.removeColumnFilterCriteria(i);
}
Logger.log('All filters cleared')
}
else {Logger.log('There is no filter')}
}
答案 2 :(得分:0)
重置过滤条件+按第一列排序(作为默认状态)。 并将此操作添加到主菜单。
/** @OnlyCurrentDoc */
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [
{name: "Reset filters", functionName: "ResetFilters"},
];
ss.addMenu("Custom actions", menuEntries); // add to main menu
}
function ResetFilters() {
var spreadsheet = SpreadsheetApp.getActive();
var lastColumn = spreadsheet.getActiveSheet().getLastColumn();
var filter = spreadsheet.getActiveSheet().getFilter();
var criteria = SpreadsheetApp.newFilterCriteria().build();
for (var i = 1; i <= lastColumn; i++) {
filter.setColumnFilterCriteria(i, criteria);
}
filter.sort(1, true); // remove this line for disable setting of sorting order
};
答案 3 :(得分:0)
全部清除
`function turnOffFilter(sheet) {
for (var index = 1; index < sheet.getLastColumn(); index++) {
if (sheet.getFilter().getColumnFilterCriteria(index)) {
sheet.getFilter().removeColumnFilterCriteria(index);
}
}
}`