-1

I have a list of items in column A in a Google Sheet.

I want to create an App Script that will create a Filter View (different than a filter) for each unique value in Column A. I know I need to use addFilterView, but I'm having trouble getting the script written correctly.

Filter
A
A
A
B
C
C
D
Andrew Seaman
  • 47
  • 1
  • 6
  • 2
    Take a look at this thread https://stackoverflow.com/questions/60183872/retrieve-filterviewid-from-batchupdate-request-addfilterview – TheWizEd Feb 17 '22 at 00:50
  • 1
    Does this answer your question? [Retrieve filterViewId from batchUpdate request addFilterView](https://stackoverflow.com/questions/60183872/retrieve-filterviewid-from-batchupdate-request-addfilterview) – David Salomon Feb 17 '22 at 01:16

1 Answers1

2

Try

function create_filter_view() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = ss.getId();
  var sheet = ss.getSheetByName("Sheet1");
  var sheetId = sheet.getSheetId();
  var range = sheet.getRange("A2:A" + sheet.getLastRow());
  var values = range.getValues();
  uniqueValues = values.flat().filter(onlyUnique)
  var requests = uniqueValues.map((a) => ({ addFilterView: { filter: { title: a, range: { sheetId: sheetId, startRowIndex: 0, startColumnIndex: 0 }, filterSpecs: [{ columnIndex: 0, filterCriteria: { condition: { type: "TEXT_EQ", values: [{ userEnteredValue: a }] } } }] } } }));
  var response = Sheets.Spreadsheets.batchUpdate({ requests }, ssId);
}
function onlyUnique(value, index, self) {
  return self.indexOf(value) === index;
}

enable google sheets api

Mike Steelson
  • 14,650
  • 2
  • 5
  • 20