Javascript 函数OneEdit(e)仅适用于单单元格编辑

Javascript 函数OneEdit(e)仅适用于单单元格编辑,javascript,google-apps-script,Javascript,Google Apps Script,我使用下面的脚本为a列中的每个编辑添加时间戳,但是如果我复制了一系列单元格并粘贴到a列,脚本将仅对第一个单元格起作用。是否有方法捕获所有已编辑单元格的时间戳 function onEdit(e) { var startRow=3; var targetColumn=1; var ws="Master Data"; var row = e.range.getRow(); var col = e.range.getColumn(); if (col

我使用下面的脚本为a列中的每个编辑添加时间戳,但是如果我复制了一系列单元格并粘贴到a列,脚本将仅对第一个单元格起作用。是否有方法捕获所有已编辑单元格的时间戳

function onEdit(e) {

  var startRow=3;
  var targetColumn=1;
  var ws="Master Data";
  var row = e.range.getRow();
  var col = e.range.getColumn();
  
  if (col === targetColumn && row >= startRow && e.source.getActiveSheet().getName() === ws ){ 
    var currentDate = new Date();
    
    if(e.source.getActiveSheet().getRange(row,1).getValue() !== ""){
      if(e.source.getActiveSheet().getRange(row,2).getValue() == ""){
        e.source.getActiveSheet().getRange(row,2).setValue(currentDate);
      }    
    }
  }
}


对不起,我无法让它工作。我们能在我的脚本上实现这个吗?它适合我。我做不到这意味着什么?脚本在我的工作表上什么都做不了。。我还尝试在我的脚本上使用e.range而不是e.source,当我更改它时,它也没有给出任何东西从onEdit启动另一个函数。您是否意识到在没有事件对象的情况下无法运行onEdit函数,因此要么提供事件对象,要么让onEdit触发器提供事件对象。这意味着您无法从脚本编辑器运行这些函数。很抱歉,我无法实现此功能。我们可以在我的脚本上实现此功能吗?它适合我。我不能让它工作意味着什么?脚本在我的工作表上根本没有做任何事情。我还尝试在脚本上使用e.range而不是e.source,当我更改它时,它也没有给出任何东西。我理解的是“vs.forEach(function(r,I){”从onEdit启动另一个函数。您是否意识到在没有事件对象的情况下无法运行onEdit函数,因此要么提供事件对象,要么让onEdit触发器提供事件对象。这意味着您无法从脚本编辑器运行这些函数。
function onEdit(e) {
  //e.source.toast('Entry');
  const sh=e.range.getSheet();
  if (e.range.columnStart==1 && e.range.rowStart>2 && sh.getName()=="Master Data") { 
    var ts = Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"E MMM dd, yyyy HH:mm:ss");
    var vs=sh.getRange(e.range.rowStart,e.range.columnStart,e.range.rowEnd-e.range.rowStart+1,2).getValues();
    vs.forEach(function(r,i){
      if(r[0].toString().length!=0 && !r[1]) {
        sh.getRange(i+e.range.rowStart,2).setValue(ts);
      }
    });
  }
}