Appscript日期值检测函数全返回false问题咨询
问题原因与修复方案
代码核心错误
- 你给
isValidDate校验函数传入的oct是谷歌表格的Range单元格对象,不是单元格内存储的实际值,类型永远无法匹配日期对象,所以函数始终返回false - 存在冗余取值逻辑:
e.range本身就指向你本次编辑的单元格,不需要再次调用getRange+getCell重复获取范围
修复后代码
function isValidDate(d) { if ( Object.prototype.toString.call(d) !== "[object Date]" ) return false; return !isNaN(d.getTime()); } function onEdit(e) { const activeSheet = e.source.getActiveSheet(); const editedRow = e.range.getRow(); // 仅处理第4行的编辑操作 if (editedRow !== 4) return; // 直接从编辑范围读取单元格实际值 const editedValue = e.range.getValue(); const targetCell = activeSheet.getRange('A6'); if(isValidDate(editedValue)){ targetCell.setValue(true); } else { targetCell.setValue(false); } }
补充说明
如果你的需求是只要第4行存在任意一个日期值,A6就为true,而非仅判断本次编辑的单元格是否为日期,可以修改逻辑为编辑第4行时遍历整行所有非空单元格校验,匹配到任意日期就返回true。
内容的提问来源于stack exchange,提问作者Nguyễn Minh Hạnh
相关产品推荐
相关产品推荐

