Apps 脚本(Google 张)如何使用数组执行 .setHiddenValues

Apps Script (Google Sheets) How to perform .setHiddenValues with an Array

我有一些值存储在数组中,现在我想从过滤器中删除存储在该数组中的所有值。 这些值已正确存储在数组中,但我无法从过滤器中删除这些值。

数组的名称是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();
};

你不需要遍历数组

如果您的数组类似于 var HideValues = [1,2,3,4,5];

您可以简单地指定 criteria.setHiddenValues(HideValues).build(); - 无需 while 循环

另外:

  1. 对于过滤器,您应该首先创建它(如果尚未创建)并将其应用于范围,而不是 sheet:
  var filter = spreadsheet.getSheetByName('TEM Tool Data').getDataRange().createFilter();
  filter.setColumnFilterCriteria(3, criteria);
  1. 你应该将它应用于一个范围,而不是 sheet