如何(谷歌脚本)下拉选择后,当公式更改单元格值并过滤掉这些行时触发脚本?



一般来说,我有一个谷歌表格,其中我在单元格 C2 中有一个下拉列表,其中包含多个选项。选项为 30 天、60 天、90 天。选择 30 天时,我需要从同一电子表格中过滤掉某些数据行。IE:用户在下拉菜单(单元格 C2(中选择"30 天"。在同一个电子表格中,第 59 行到 64 第 1 列,我有公式 = C2 并在下拉选择后更改为"30 天",这些应该被过滤掉。如果用户在下拉列表中选择"60 天",则第 59 行到第 64 行将重新出现。

我已经研究并尝试了这两种方法,但无法让它们完全适用于我的用例。

下面不读取公式中的值: https://yagisanatode.com/2018/05/26/how-to-hide-a-row-based-on-a-cell-value-in-google-sheets-with-filter-or-google-apps-script/

我无法让以下内容适用于我的用例: 在公式更改单元格值时触发脚本

var SHEET = "check in template";
// The value that will cause the row to hide. 
var VALUE = "30 Day Check In";
// The column we will be using 
var COLUMN_NUMBER = 3
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
//Ensure on correct sheet.
if(SHEET == activeSheet.getName()){
var activeCell = ss.getRange("C2");
//Ensure we are looking at the correct column.
if(activeCell.getColumn() == COLUMN_NUMBER){
//If the cell matched the value we require,hide the row. 
if(activeCell == VALUE){
activeSheet.hideRows(59,5);
};
};
};
}

我希望过滤掉第 59 到 64 行,但没有触发任何内容。

试试这个:

function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()=='check in template' && e.range.columnStart==3 && e.range.rowStart==2){
if(e.value=="30 Day Check In"){
sh.hideRows(59,5);
}
}
}

无法在没有事件对象的情况下运行它来测试这一点。 因此,不要尝试将其从脚本编辑器中运行出来。

最新更新