Google Sheets筛选视图中onEdit函数失效问题求助
问题解决方法
你的问题出在当行被全局筛选隐藏但通过筛选视图显示时,直接使用行号定位单元格的方式不够可靠。可以通过以下修改让onEdit函数正常工作:
修改后的代码
function onEdit(e){ const row = e.range.getRow(); const col = e.range.getColumn(); const FIXEDROW = 1; const SHEET_NAME = "School Log"; const BACKDATE_COL = 13; const DATE_MODIFIED_COLUMN = 14; const targetSheet = e.range.getSheet(); if (targetSheet.getName() === SHEET_NAME && col === BACKDATE_COL && row > FIXEDROW){ const CURRENT_DATE = new Date(); // 使用offset直接定位到当前编辑单元格的同一行目标列,避免行号筛选偏差 e.range.offset(0, DATE_MODIFIED_COLUMN - BACKDATE_COL).setValue(CURRENT_DATE); } }
修改说明
- 用
e.range.getSheet()替代e.source.getActiveSheet():直接获取编辑单元格所属的工作表,比通过活跃工作表定位更精准,避免切换工作表时的错误。 - 使用
offset()方法定位目标列:通过当前编辑单元格(M列)偏移固定列数的方式,直接定位到N列单元格,完全绕开筛选状态下的行号匹配问题,无论行是否被全局筛选隐藏,都能准确设置对应行的时间戳。
这样修改后,无论你在全局筛选显示的行,还是通过筛选视图查看的隐藏行中编辑M列,N列都会正确生成时间戳。
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

