Google apps script 使用Google应用程序脚本插入包含自定义公式的新过滤器视图
请参见下面的示例图片 我想使用Google Sheets脚本编辑器在单元格Google apps script 使用Google应用程序脚本插入包含自定义公式的新过滤器视图,google-apps-script,google-sheets,google-sheets-api,google-sheets-filter-view,Google Apps Script,Google Sheets,Google Sheets Api,Google Sheets Filter View,请参见下面的示例图片 我想使用Google Sheets脚本编辑器在单元格B3上添加一个过滤器视图,该视图根据自定义公式=(B4=$B$1)进行过滤 计划添加一个onEdit函数,用于检查单元格B1中的值是否已更改,如果已更改,则重置单元格B3中的过滤器视图 这伤了我的脑筋!当我在B1中的值发生变化时,我似乎找不到自动更新/刷新过滤器的方法 我的代码目前看起来像这样,但这不会重新添加自定义公式。它只是不断地向我显示所有非空行 function onEdit(e){ var ss = Spr
B3
上添加一个过滤器视图,该视图根据自定义公式=(B4=$B$1)
进行过滤
计划添加一个onEdit
函数,用于检查单元格B1
中的值是否已更改,如果已更改,则重置单元格B3
中的过滤器视图
这伤了我的脑筋!当我在B1
中的值发生变化时,我似乎找不到自动更新/刷新过滤器的方法
我的代码目前看起来像这样,但这不会重新添加自定义公式。它只是不断地向我显示所有非空行
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheetname = "Lactation";
var sheet = ss.getSheetByName(sheetname);
var erow = e.range.getRow();
//Logger.log("DEBUG: row = "+erow);
var ecolumn = e.range.getColumn();
//Logger.log("DEBUG: column = "+ecolumn);
if (erow == 1 & ecolumn == 2 ){
// there is a match so the cell is B2
//Logger.log("DEBUG: the cell is B2");
updatefilter();
}
else
{
// there is no match so the cell is NOT I3
//Logger.log("DEBUG: the cell is not I3");
}
}
function updatefilter() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('B3').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['', 'No'])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
};
- 当编辑工作表
哺乳期
上的单元格“B1”时,您希望修改单元格“B3:B”的基本过滤器。
- 在本例中,您希望使用OnEdit事件触发器
- 您希望使用自定义公式
,作为筛选条件=(B4=$B$1)
- 您可以利用事件对象作为
的onEdit(e)
e
- 要使用基本筛选器的自定义函数,可以在满足公式时使用
B1
function onEdit(e){
var sheetName = "Lactation";
var editCell = "B1";
var range = e.range;
var sheet = range.getSheet();
if (range.getA1Notation() == editCell && sheet.getSheetName() == sheetName) {
updatefilter(sheet);
} else {
// do something
}
}
function updatefilter(sheet) {
sheet.getRange('B3').activate();
var criteria = SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied("=(B4=$B$1)").build();
var filter = sheet.getFilter();
if (!filter) {
filter = sheet.getRange("B3:B").createFilter();
}
filter.setColumnFilterCriteria(2, criteria);
};
- 在该脚本中,当编辑
工作表上的单元格“B1”时,OnEdit事件触发器将运行函数哺乳期
。当基本过滤器存在时,它会被更新。如果不存在过滤器,则将过滤器设置为新过滤器。过滤器的范围为“B3:B”。使用updatefilter
的自定义函数作为标准=(B4=$B$1)
- 在上面的脚本中,可以使用简单的触发器。但是如果您使用要求授权的方法,当发生错误时,请尝试使用可安装触发器
- 当编辑工作表
哺乳期
上的单元格“B1”时,您希望修改单元格“B3:B”的基本过滤器。
- 在本例中,您希望使用OnEdit事件触发器
- 您希望使用自定义公式
,作为筛选条件=(B4=$B$1)
- 您可以利用事件对象作为
的onEdit(e)
e
- 要使用基本筛选器的自定义函数,可以在满足公式时使用
B1
function onEdit(e){
var sheetName = "Lactation";
var editCell = "B1";
var range = e.range;
var sheet = range.getSheet();
if (range.getA1Notation() == editCell && sheet.getSheetName() == sheetName) {
updatefilter(sheet);
} else {
// do something
}
}
function updatefilter(sheet) {
sheet.getRange('B3').activate();
var criteria = SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied("=(B4=$B$1)").build();
var filter = sheet.getFilter();
if (!filter) {
filter = sheet.getRange("B3:B").createFilter();
}
filter.setColumnFilterCriteria(2, criteria);
};
- 在该脚本中,当编辑
工作表上的单元格“B1”时,OnEdit事件触发器将运行函数哺乳期
。当基本过滤器存在时,它会被更新。如果不存在过滤器,则将过滤器设置为新过滤器。过滤器的范围为“B3:B”。使用updatefilter
的自定义函数作为标准=(B4=$B$1)
- 在上面的脚本中,可以使用简单的触发器。但是如果您使用要求授权的方法,当发生错误时,请尝试使用可安装触发器