仅在选定的工作表上运行 onEdit 脚本

时间:2021-07-23 01:47:01

标签: javascript google-apps-script google-sheets triggers

我是编写脚本的新手,但已设法复制和编辑(bodge ...)一个脚本,该脚本将 onEdit,将自定义时间戳放入进行编辑的单元格旁边的单元格中。该脚本针对 x2 onEdit 列 (3,6),为单元格偏移量 (-1) 加上时间戳。

现在工作簿已开发为包含多个工作表,其中大部分不适合运行此脚本,但我不知道如何指定应在哪些工作表上运行。

下面是我拼凑起来的脚本,它适用于所有工作表,我现在想将其限制为仅适用于特定工作表。

function onEdit(e) {
 var colsToWatch = [3,6],
    offset = [-1,-1],
    ind = colsToWatch.indexOf(e.range.columnStart);
if (ind === -1 || e.range.rowStart === 1) return;
e.range.offset(0, offset[ind])
.setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT+1", "dd MMM yyyy     HH:mm.ss"))
}

请有人提供仅在特定工作表上运行脚本的代码来帮助我。我也非常感谢您提供更简单的脚本来实现相同的目标,特别是如果它消除了在初始编辑后随后编辑 onEdit 单元格时被覆盖的时间戳。

非常感谢!!

1 个答案:

答案 0 :(得分:0)

function onEdit(e) {
  const sh = e.range.getSheet();
  const shts = ['Sheet1','Sheet2'];
  const idx = shts.indexOf(sh.getName());
  if(~idx ) {
    //Whatever code you put here will only run on Sheet1 or Sheet2
  }
}

这对我有用(在 Sheet1 和 Sheet2 上):

function onEdit(e) {
  //e.source.toast('entry');
  const sh = e.range.getSheet();
  const shts = ['Sheet1','Sheet2'];
  const idx = shts.indexOf(sh.getName());
  if(~idx ) {
    let rg = sh.getRange(e.range.rowStart,9);
    if(rg.isBlank()) {
      rg.setValue(new Date());
    }
  }
}

JavaScript Reference