onEdit()不能捕获所有更改

时间:2019-02-24 21:28:09

标签: google-apps-script google-sheets

我有这个简单的触发器脚本,应该在下一列中添加一个时间戳。很简单,onEdit不会捕获所有编辑。 我可以在设置中做任何事情吗?

function onEdit(e){
  if (e.value == "TRUE") {e.range.offset(0, 1).setValue(new Date())} 
}

enter image description here

1 个答案:

答案 0 :(得分:4)

关于您的情况,有a thread。在此线程中,Rubén表示

  

这是onEdit的已知限制。

关于此问题的直接解决方案,需要等待Google更新。

在这里,我想为您解决一个变通方法。此解决方法的流程如下。

此替代方法假设在“ F1:F20”范围内存在复选框。

  1. 检查已编辑的范围是否在“ F1:F20”中。
  2. 如果编辑的范围在“ F1:F20”中,则检索“ F1:F20”的值并检查每个值。
  3. 创建一个数组以放置结果。
  4. 将创建的数组覆盖为“ F1:F20”。

通过这种方式,尽管它可能并不完美,但是可以人为地实现。请将此视为几种解决方法之一。

示例脚本:

function onEdit(e){
  if (e.range.columnStart == 6 && e.range.columnEnd == 6 && e.range.rowStart <= 20) {
    var ckeckboxRange = "F1:F20";
    var date = new Date();
    var range = e.source.getRange(ckeckboxRange);
    var values = range.getValues().map(function(e) {return e[0] === true ? [date] : [""]});
    range.offset(0, 1).setValues(values);
  }
}

结果:

enter image description here

注意:

  • 这是一个简单的示例脚本。因此,请根据您的情况进行修改。

如果这不是您想要的结果,我表示歉意。