onEdit 函数,其中特定列中的操作设置下一列中相应行的值

And*_*ell 1 google-sheets google-apps-script

我正在尝试制定一个仅由一个特定列触发的谷歌脚本 onEdit 函数,并将在下一列的同一行中设置值。

当编辑 C 列中的单元格时,脚本应在 D 列中设置值 (new Date()),并且应限制为第 7 行之后的行。

目前我有一个可以工作的工具,但是当您编辑工作表中的任何单元格时它就会工作,所以它并不理想。我已经用谷歌搜索和阅读了一段时间但无济于事。任何帮助将不胜感激。

这是我目前拥有的代码:

function onEdit() { //Function to add a time stamp to Complete Time Column D
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range= sheet.getActiveCell();
  var row = range.getRow();
  if(row>7){
    sheet.getRange(row, 4).setValue(new Date());
    
  }
}
Run Code Online (Sandbox Code Playgroud)

soM*_*rio 5

解释:

  • 您应该利用事件对象并使用它来查找活动工作表和活动范围。

  • 当编辑 C 列中的单元格时(但在第 7 行之后),以下脚本将在 D 列中设置新日期。

  • 你们非常接近。以与您使用相同的方式,var row = range.getRow();您也可以使用var row = range.getColumn();并将其作为约束3(C 列)。

  • 该脚本适用于活动工作表。您可能希望将此功能限制到特定工作表(例如Sheet1)。如果是,则将if条件更改为如下所示:

    if(as.getName() == 'Sheet1' && row>7 && col==3)


解决方案:

function onEdit(e) { 
    
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const as = e.source.getActiveSheet();
  
  if(row>7 && col==3){
    as.getRange(row, 4).setValue(new Date());
  }
}
Run Code Online (Sandbox Code Playgroud)