Google脚本过滤范围为一个值

时间:2018-06-21 18:47:18

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

我想为第1列中仅包含特定值“ Bob”的行筛选一个Google表格范围。到目前为止,我的代码可以让我滤除行中具有Bob的行1.我需要相反的是,我想返回第1列中只有“ Bob”的行。因此,在filterSettings不是hiddenValues或类似
的地方 “ filterSettings ['criteria'] [columnIndex] ==! {'hiddenValues':[filterCriteria]”

我的查询与this one类似,但是我不想排除带有过滤条件的行,我希望这些是剩下的唯一行。

Code.gs

var ss = SpreadsheetApp.getActiveSpreadsheet();
var filterCriteria = 'Bob';


    var filterSettings = {};

    filterSettings.range = {
        sheetId: ss.getSheetByName('Sheet1').getSheetId()
                            };

    filterSettings.criteria = {};
        var columnIndex = 0;
    filterSettings['criteria'][columnIndex] = {
        'hiddenValues': [filterCriteria]
                                               };

    var request = {
      setBasicFilter: {
      filter: filterSettings
                      }
                  };
    Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());

1 个答案:

答案 0 :(得分:2)

在示例情况下,您要排除“鲍勃”以外的值。如果我的理解是正确的,那么该修改如何?

修改点:

  • 使用typefilterCriteria
    • typeTEXT_CONTAINS。值是“鲍勃”。
    • 通过这种方式,仅保留包括“ Bob”在内的值。

修改后的脚本:

var ss = SpreadsheetApp.getActiveSpreadsheet();

var filterCriteria = {"type":"TEXT_CONTAINS","values":[{"userEnteredValue":"Bob"}]}; // Modified

var filterSettings = {};
filterSettings.range = {sheetId: ss.getSheetByName('Sheet1').getSheetId()};
filterSettings.criteria = {};
var columnIndex = 0;

filterSettings['criteria'][columnIndex] = {'condition': filterCriteria}; // Modified

var request = {setBasicFilter: {filter: filterSettings}};
Logger.log(JSON.stringify({'requests': [request]}))
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());

注意:

  • 此修改后的脚本假定您可以使用Sheets API。

参考文献:

如果我误解了您的问题,请告诉我。我想修改它。