Google 一个值的脚本过滤器范围

Google Script Filter Range for one value

我想为第 1 列中仅包含特定值 "Bob" 的行筛选 google sheet 范围。到目前为止,我的代码允许我筛选 out 列 1 中有 Bob 的行。我需要相反,我想 return 列 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());

在您的示例案例中,您想排除 "Bob" 以外的值。如果我的理解是正确的,这个修改怎么样?

修改点:

  • 使用typefilterCriteria
    • typeTEXT_CONTAINS。并且值为 "Bob".
    • 这样,只剩下包括"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());

注:

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

参考资料:

如果我误解了你的问题,请告诉我。我想修改一下。