问题描述
我有一个脚本,该脚本会在编辑第一列时添加当前日期,但是当粘贴值时,此脚本目前不起作用.
I have a script that adds the current date when column one is edited, but at the moment it doesn't work when a value is pasted in.
是否可以使此脚本为粘贴到第1列的范围的每一行添加日期?
Is it possible to make this script add the date for each row of the range that is pasted into column 1?
function onEdit(e) {
if (e.range.getSheet().getSheetName() == 'Add Statements Here' && e.range.getColumn() == 1) {
e.range.offset(0,10).setValue(e.value.length>0 ? new Date() : '');
}
}
推荐答案
粘贴到单元格上时,事件对象设置为 undefined
.
When pasting onto the cell, the "value" property of the event object is set to undefined
.
因此,评估 e.value.length> 0
(如提供的代码的第3行)会导致TypeError,因为 undefined
不包含"length"属性.
Thus, evaluating e.value.length>0
(as in line 3 of the provided code), results in a TypeError since undefined
does not hold a "length" property.
为了克服这个问题,我建议您使用 e.range.getValue()
而不是 e.value
,因为range属性将声明是否插入手动输入或粘贴该值.
In order to overcome this problem I suggest you use e.range.getValue()
instead of e.value
, since the range property will be declared whether you insert the value by manually typing it or pasting it.
您修改后的代码如下所示:
Your modified code could look like below:
function onEdit(e) {
if (e.range.getSheet().getSheetName() == 'Add Statements Here' && e.range.getColumn() == 1) {
e.range.offset(0,10).setValue(e.range.getValue().length>0 ? new Date() : '');
}
}
这篇关于OnEdit不会通过复制和触发来触发粘贴到Google App脚本中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!