我有一个运行良好的脚本
function setFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var filterSettings = {};
filterSettings.range = {sheetId: ss.getSheetByName("mySheet").getSheetId()};
filterSettings.criteria = {};
filterSettings['criteria'][4] = {
'hiddenValues': ["FALSE"]
};
var request = {
"setBasicFilter": {
"filter": filterSettings
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
E 栏内
={"test";arrayformula(if(B2:B="",,not(iserror(find("mike",B2:B)))))}
'textContains': ['mike']
但这不起作用您必须在字段
TEXT_CONTAINS
下定义 condition
。
替换这个:
filterSettings['criteria'][4] = {
'hiddenValues': ["FALSE"]
};
有了这个:
filterSettings['criteria'][1] = {
"condition": {
"type": "TEXT_CONTAINS",
"values": [
{
"userEnteredValue": "mike"
}
]
}
};
criteria
已弃用,请考虑使用 filterSpecs 代替。如果电子表格上已有过滤器。 抓住现有的过滤器并使用过滤条件生成器。
const sheet = activeRange.getSheet();
const filter = sheet.getFilter();
const criteria = SpreadsheetApp.newFilterCriteria()
.whenTextContains('mike')
.build();
/* to reset the filter
const removeCriteria = SpreadsheetApp.newFilterCriteria()
.whenTextContains('')
.build();
*/
// The "3" below says put the filter in the 4th column of the filter.
filter.setColumnFilterCriteria(3, criteria);