Вы можете использовать триггер onEdit () , чтобы проверить, изменяете ли вы какое-либо значение в D3, а затем изменить фильтр каждого листа. Имейте в виду, что это сработает, только если изменение сделано вручную, а не скриптом или функцией:
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var sheet_name = sheet.getName();
//Run only if the Column C from 1 to x is edited in Sheet Employees
if (sheet_name == 'Employee' && e.range.getColumn() == 3 && e.range.getRow() > 1){
var new_value = e.value;
var sprsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheets = sprsheet.getSheets();
for (var i = 1; i < sheets.length; i++){
var filter = sheets[i].getFilter();
var values = ['WD','WE','WN']; //Values of the filter
switch(new_value){
case values[0]:
var filterCriteria = SpreadsheetApp.newFilterCriteria()
.setVisibleValues([values[0]])
.setHiddenValues([values[1], values[2]]);
break;
case values[1]:
var filterCriteria = SpreadsheetApp.newFilterCriteria()
.setVisibleValues([values[1]])
.setHiddenValues([values[0], values[2]]);
break;
case values[2]:
var filterCriteria = SpreadsheetApp.newFilterCriteria()
.setVisibleValues([values[2]])
.setHiddenValues([values[0], values[1]]);
break;
}
filter.setColumnFilterCriteria(4, filterCriteria);
}
}
}
Я уверен, что есть более элегантный способ решить эту проблему.
ССЫЛКИ: