当一个单元格被编辑时,我的应用程序脚本代码基于watchCols标记相邻的单元格。
如果用户删除一个值,我需要做的是删除时间戳。例如,如果他们完成了一个任务列表中的一个,就会在任何一行的第2列中放置一个X,但是如果他们删除了X--这意味着他们没有完成任务,那么它旁边就不应该有时间戳。
function onEdit(e)
{
var s = e.source.getActiveSheet(),
watchCols = [2, 5, 8, 11, 14, 17],
offsetCol = [1, 1, 1, 1, 1, 1],
ind = watchCols.indexOf(e.range.columnStart);
if (s.getName() !== "Sheet1" || ind === -1) return;
e.range.offset(0, offsetCol[ind])
.setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT-4", "YYYY-MMM-dd hh:m:s a"))
}这是我最后一次似乎行不通的尝试:
if(ISBLANK(e.range.columnStart) && ISBLANK(e.range.rowStart)) {
e.range.offset(0, offsetCol[ind]).setValue("");
} else {
e.range.offset(0, offsetCol[ind]).setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT-4", "YYYY-MMM-dd hh:m:s a"))
}发布于 2016-04-26 17:48:52
这是编辑事件对象的一种无文档化的行为,我认为这是一个bug。对于可安装的编辑触发器和简单的onEdit触发器,对于用户清除单元格,它的行为有所不同。
e.oldValue具有旧值,e.value未定义(事件对象没有value属性)。e.oldValue有旧值,e.value 保存对象 {"oldValue":"whatever it was"}这就是为什么在两种情况下,带有!e.value的条件语句的行为不同:未定义是falsy,但对象是真实的。
https://stackoverflow.com/questions/36870089
复制相似问题