过滤时方法签名发生变化

Method signature changes when filtering

出于某种原因,它在过滤模式下不接受我的参数。 我需要做什么?

错误:

Exception: The parameters (String) don't match the method signature for SpreadsheetApp.Filter.getRange.
CollectCases    

作品:

var SS = partner_list.getSheetByName("Ark 1");
 SS.getRange("A2:R");

无效:

var SS = partner_list.getSheetByName("Ark 1");
 SS.getFilter().getRange("A2:R");

导致错误的原因是 SpreadsheetApp.Filter.getRange 不接受任何参数,这与 SpreadsheetApp.Sheet.getRange 不同。

它只会 return 应用过滤器的范围。 (每个 sheet 只能有一个过滤器)

如果您只想获取过滤器范围的特定部分,这里是使用 offset 的解决方法示例。

解决方法:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSheet();
  // Filter is applied to "A6:A12" with values 1, 2, 3, 4, 5, 6
  var range = ss.getFilter().getRange();

  // If you only want a part of the filtered range
  // Then, you need to use offset
  // E.g. You want filtered A10:A12 with values 4, 5, 6
  var rowOffset = 3;
  var colOffset = 0;
  var rows = range.getValues().length - rowOffset;

  // rowOffset = number of rows offset (3 rows below)
  // colOffset = number of columns offset (same column)
  // rows = number of rows to be fetched
  Logger.log(range.offset(rowOffset, colOffset, rows).getValues());
}

输出:

资源: