如何在电子表格应用程序脚本中将这两个代码合并为一个?

How can I combine those two code as one in spreadsheet apps script?

function onEdit(e) {
  const sheetNames = ["sheet1","sheet2", "sheet3"];
  const sheet = e.source.getActiveSheet();
  if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 17) {
    const offset = e.range.offset(0,3)
    if (!offset.getValue()) {
      offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
    }
  }
}

 function onEdit(e) {
  const sheetNames = ["sheet A","sheet B", "sheet C"];
  const sheet = e.source.getActiveSheet();
  if (sheetNames.includes(sheet.getName()) && e.range.columnStart === 1) {
    const offset = e.range.offset(0,19)
    if (!offset.getValue()) {
      offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss")
    }
  }
}

我将这两个代码应用于两个不同的点差sheet,但现在我需要将它们合并为一个。我对此一无所知。所以我需要你们帮我解决它。

有 3 个不同之处。这是我想放置 sign 的地方,放置 get consquence 以及应用它们的 sheets。

所以我希望 sheet 1,2,3 和 sheet A,B,C 独立工作,但仍然在相同的分布中工作sheet。

请告诉我该怎么做。谢谢

在您的脚本中,如何将它们合并为一个脚本,如下所示?

修改后的脚本:

function onEdit(e) {
  const sheetNames1 = ["sheet1", "sheet2", "sheet3"];
  const column1 = 17;
  const offset1 = [0, 3];
  const sheetNames2 = ["sheet A", "sheet B", "sheet C"];
  const column2 = 1;
  const offset2 = [0, 19];

  const obj = sheetNames1.reduce((o, s) => (o[s] = { column: column1, offset: offset1 }, o), {});
  sheetNames2.forEach(s => obj[s] = { column: column2, offset: offset2 });
  const sheet = e.source.getActiveSheet();
  const sheetName = sheet.getName();
  if (obj[sheetName] && e.range.columnStart === obj[sheetName].column) {
    const offset = e.range.offset(...obj[sheetName].offset);
    if (!offset.getValue()) {
      offset.setValue(new Date()).setNumberFormat("YY/MM/dd HH:mm:ss");
    }
  }
}
  • 在此修改中,第一个和第二个脚本的每个参数都放在一个对象中。并使用创建的对象,脚本是运行。由此,我认为条件的可扩展性可能很简单。