OnEdit不会通过复制和触发来触发粘贴到Google App脚本中 [英] OnEdit Not Triggering With Copy & Paste in Google App Script

查看:73
本文介绍了OnEdit不会通过复制和触发来触发粘贴到Google App脚本中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个脚本,该脚本会在编辑第一列时添加当前日期,但是当粘贴值时,此脚本目前不起作用.

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() : '');
  }

} 

推荐答案

粘贴到单元格上时,

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脚本中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆