OnEdit 不通过 Google 应用程序脚本中的复制和粘贴触发

Pep*_*e S 4 triggers google-sheets google-apps-script

我有一个脚本,可以在编辑第一列时添加当前日期,但目前在将值粘贴.

是否可以让此脚本为粘贴到第 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() : '');
  }

} 
Run Code Online (Sandbox Code Playgroud)

car*_*g97 6

粘贴到单元格时,事件对象的“value”属性设置为undefined

因此,评估e.value.length>0(如所提供代码的第 3 行)会导致 TypeError,因为undefined不包含“length”属性。

为了克服这个问题,我建议您使用e.range.getValue()而不是e.value,因为无论您是通过手动键入还是粘贴来插入值,都会声明 range 属性。

您修改后的代码可能如下所示:

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() : '');
  }
}
Run Code Online (Sandbox Code Playgroud)