Google Sheet Script: TypeError: Не удается найти функцию newFilterCriteria в объекте Spreadsheet - PullRequest
0 голосов
/ 07 февраля 2020

С помощью макроса я хочу скопировать данные с одного листа на другой. Цель сценария - распознать выбранный идентификатор проекта, установить фильтр на другом листе, чтобы копировались только строки с указанным c идентификатором проекта.

Я получаю эту ошибку:

TypeError: Не удается найти функцию newFilterCriteria в объекте Spreadsheet.

function CopyData() {

  //Counting variable i
  var i = 1;

  //Array with all PID´s
  var HideValues = [0,1];

  var spreadsheet = SpreadsheetApp.getActive();

  //Set active sheet to Visualization
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Visualization'), true);

  //Variable with selected PID
  var SelectedPID = spreadsheet.getActiveSheet().getRange('C1').getValue();

  //Set active sheet to PID
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('PID'), true);

  //Variables with row and column to go through all PID´s
  var row = 2;
  var col = 1;

  var rowCheck = 2;
  var colCheck = 3;

  var isSelected = spreadsheet.getActiveSheet().getRange(rowCheck, colCheck  ).getValue();

  //Add all PID´s to an array
  while (i < 500) {
    if (isSelected == 0){
      HideValues.push(spreadsheet.getActiveSheet().getRange(row, col  ).getValue());
      i++;
      row++;
      rowCheck++;}
    else {
      i++;
      row++;
      rowCheck++;}}

  //Set active sheet to TEM Tool Data
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('TEM Tool Data'), true);
  spreadsheet.getRange('\'TEM Tool Data\'!E1').activate();
  var criteria = spreadsheet.newFilterCriteria(); 

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

  //Add selected PID to the filter
  //criteria.setVisibleValues([SelectedPID])
  //.build();

  //Filter
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(5, criteria);

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

  //Set active sheet to Visualization
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Visualization'), true);

  //Paste
  spreadsheet.getRange('A5').activate();
  spreadsheet.getRange('\'TEM Tool Data\'!A2:I1386').copyTo(spreadsheet.getActiveRange(), spreadsheet.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('J3').activate();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...