Apps Script (Google Sheets) Как выполнить .setHiddenValues ​​с массивом - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть некоторые значения, хранящиеся в массиве, и теперь я хочу удалить ВСЕ значения, хранящиеся в этом массиве, из фильтра. Значения правильно хранятся в массиве, но мне не удается удалить значения из фильтра.

Имя массива: HideValues

Вот код:

  var p = 0;

  spreadsheet.getSheetByName('TEM Tool Data').getRange('\'TEM Tool Data\'!E1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria();

  //Remove all PID´s from the filter
  while (p < HideValues.length){
  criteria.setHiddenValues([HideValues[p]]).build();
  p++;}   

  //Filter
  spreadsheet.getSheetByName('TEM Tool Data').getFilter().setColumnFilterCriteria(5, criteria);

  //Copy filtered area
  spreadsheet.getRange('A2:I1386').activate();

  //Paste
  spreadsheet.getSheetByName('Visualization').getRange('A5').activate();
  spreadsheet.getRange('\'TEM Tool Data\'!A2:I1386').copyTo(SpreadsheetApp.getActiveRange(), 
  SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getSheetByName('Visualization').getRange('J3').activate();
};

1 Ответ

0 голосов
/ 14 февраля 2020

Вам не нужно l oop через массив

Если ваш массив что-то вроде var HideValues = [1,2,3,4,5];,

, вы можете просто указать criteria.setHiddenValues(HideValues).build(); - без while l oop

Также:

  1. Для фильтра вы должны сначала создать его (если это еще не сделано) и применить его к диапазону, а не к листу:
  var filter = spreadsheet.getSheetByName('TEM Tool Data').getDataRange().createFilter();
  filter.setColumnFilterCriteria(3, criteria);
Вы должны применять его к диапазону, а не к листу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...