使用 e.range 获取起始行

Getting a Starting Row with e.range

我在 Google Sheets 上使用了一个脚本,它在单元格旁边的单元格的值被设置时在单元格上创建时间戳。如果删除旁边单元格的值,它会清除日期。

但是,它正在影响整个 sheet。 我只希望此代码从第 18 行开始运行。

我对编码还很陌生。我做了一些研究,但仍然无法弄清楚。我定义了一个名为 StartRow 的变量,并尝试在我的 if 语句 中使用它,然后在我的 loop 中使用它"e.range.rowStart" 但它多次触发了日期。

有人可以就我可能需要更改或添加的内容向我提供反馈吗?提前致谢!

这是我使用的代码:

function onEdit(e) {
  var sheet = ["Sheet1"];
  var ss = SpreadsheetApp.getActiveSheet();

  var StartRow = 18; //(defined but not sure where or if I should use it)
  var InputCol = 6;
  var OutputCol = 7;

  if (sheet.indexOf(ss.getName()) == -1 || e.range.columnStart != InputCol) return;

  var val = ss.getRange(e.range.rowStart, e.range.columnStart).getValue();
  if (val) {
    var date = new Date();
    for (var i = e.range.rowStart; i <= e.range.getLastRow(); i++)
      ss.getRange(i, OutputCol).setValue(date);
  } else
    ss.getRange(e.range.rowStart, OutputCol, e.range.getLastRow() - e.range.rowStart + 1).clearContent();
}

试试这个:

function onEdit(e) {
  //e.source.toast('entry');
  const sh = e.range.getSheet();
  if (sh.getName() == 'Sheet1' && e.range.rowStart > 18 && e.range.columnStart == 6) {
    if (e.value) {
      e.range.offset(0, 1).setValue(new Date());
    } else {
      e.range.offset(0, 1).setValue('');
    }
  }
}