Google脚本:检索过滤器的默认值

时间:2019-12-06 15:52:42

标签: javascript google-apps-script google-sheets

我想为电子表格中的列创建过滤器,然后检索为过滤器创建的默认条件值列表。我相信我的代码返回了一个没有任何值的Filter对象。

function TestFilter(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 2, sheet.getMaxRows(), 1).createFilter();
  var filter = sheet.getFilter();
  var output = filter.getColumnFilterCriteria(2).getCriteriaValues();
  return output;
}

2 个答案:

答案 0 :(得分:0)

您可以为此使用以下功能:

如果将过滤器设置为隐藏所有可能的值,则可以使用函数getHiddenValues()获得所需的内容。

但是,如果您的过滤器仅隐藏值的子集,则将无法实现。在这种情况下,您可以使用以下Google Apps脚本函数来获取不同的值:

function getDistinctValues(range) {
  var values = range.getValues();
  var unique = {};

  for (var i=0; i<values.length; i++) {
    for (var j=0; j<values[i].length; j++) {
      var key = values[i][j];
      if (key !== null && key !== undefined && key !== '')
        unique[key] = true;
    }
  }

  return Object.keys(unique);
}

如果您试图在A列上获得不同的值,它将使用它:

var distinctValues = getDistinctValues(sheet.getRange("A2:A"));

请注意,此函数将以字符串形式返回值。如果要获取实际的数字值而不是字符串,则可以使用以下代码简单地解析值:

var distinctValues = getDistinctValues(sheet.getRange("A2:A")).map(parseFloat);

答案 1 :(得分:0)

我相信通过使用类似这样的功能,有3个功能中有2个存在错误:

    var filter = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheetName").getFilter();

    var criteriaValues = filter.getColumnFilterCriteria(9).getCriteriaValues();
    Logger.log("criteria Values length " + criteriaValues.length);
    Logger.log(criteriaValues);

    var visibleValues = filter.getColumnFilterCriteria(9).getVisibleValues();
    Logger.log("visible Values length " + visibleValues.length);
    Logger.log(visibleValues);

    var hiddenValues = filter.getColumnFilterCriteria(9).getHiddenValues();
    Logger.log("hidden Values length " + hiddenValues.length);
    Logger.log(hiddenValues);

并在第I列(从左数第9位)上设置过滤器,无论我过滤的是多少个值或哪个值,我只会看到从该列中隐藏的值criteriaValues和{ {1}}数组始终为空,而visibleValues始终正确显示过滤出的值。

如果有人可以再次检查并确认它很棒,否则,也许我只是在做一些愚蠢的事情,在这种情况下,请让我知道:)。

这是根据https://developers.google.com/apps-script/reference/spreadsheet/filter-criteria.html

创建的
  

Blockquote