Google 脚本创建隐藏新添加值的过滤器。 (张)

问题描述 投票:0回答:1

我正在查看来自 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”)。

有什么想法吗?

google-apps-script google-sheets filter view hidden-field
1个回答
0
投票

这对我有用:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.