我正在查看来自 Google 表格中的 Google 表单的数据。我想在谷歌工作表中创建过滤器视图,以仅显示列中的空白值。问题是,当在Google Sheet中输入新值时,过滤器视图会自动在过滤器中添加该值,而我需要再次手动调整过滤器。
为了解决这个问题,我尝试创建一个脚本,将其链接到一个按钮。该脚本背后的想法是首先获取我的列中的所有值,然后在隐藏函数中设置这些值。
现在,脚本显示所有值:
function applyCustomFilter() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
// Create a filter if it doesn't exist
var filter = sheet.getFilter() || sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).createFilter();
// Get all the values in Column M (column index 13)
var valuesColumnM = sheet.getRange("M2:M" + sheet.getLastRow()).getValues();
// Determine the hidden values for Column M based on the data
var hiddenValuesColumnM = [];
for (var i = 0; i < valuesColumnM.length; i++) {
if (valuesColumnM[i][0] !== 'DATES' && valuesColumnM[i][0] !== '') {
hiddenValuesColumnM.push(valuesColumnM[i][0]);
}
}
// Define the filter criteria for column M (column index 13) with dynamically determined hidden values
var criteriaColumnM = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(hiddenValuesColumnM) // Show 'DATES' and blanks in column M
.build();
// Apply the filter criteria to the respective columns
filter.setColumnFilterCriteria(13, criteriaColumnM);
}
我希望过滤器隐藏所有值并仅显示空白(加上我的表格标题(“ValueA,ValueB”)。
有什么想法吗?
这对我有用:
function applyCustomFilter() {
const ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName('sheet1');
var filter = sh.getFilter() || sh.getRange(2, 1, sh.getLastRow() - 1, sh.getLastColumn()).createFilter();
var vsm = sh.getRange("M2:M" + sh.getLastRow()).getValues().flat();
var hvsm = vsm.filter(v => v);
var crm = SpreadsheetApp.newFilterCriteria().setHiddenValues(hvsm).build();
filter.setColumnFilterCriteria(13, crm);
}