【问题标题】:Method signature changes when filtering过滤时方法签名更改
【发布时间】:2021-02-08 15:31:04
【问题描述】:
由于某种原因,它在过滤模式下不接受我的参数。
我需要做什么?
错误:
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");
【问题讨论】:
标签:
google-apps-script
google-sheets
google-sheets-api
spreadsheet
【解决方案1】:
导致错误的原因是SpreadsheetApp.Filter.getRange 不接受任何参数,不像SpreadsheetApp.Sheet.getRange。
它只会返回应用过滤器的范围。 (每张纸只能有一个过滤器)
如果您只想获取过滤器范围的特定部分,这里是使用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());
}
输出:
资源: