两个 OnEdit 函数不能一起工作

Wis*_*ish 2 google-sheets google-apps-script

onEdit()在 Google 电子表格上得到了两个函数脚本。但似乎一次正在运行一个功能。

第一个函数是为所有行着色的脚本,第二个函数是基于列编辑在 2 个单元格上添加日期的日期函数。

这里是脚本。

function colorAll() 
{
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 4;
  var endRow = sheet.getLastRow();
  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}
SpreadsheetApp.flush();
function colorRow(r)
{
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 32);
  var data = dataRange.getValues();
  var row = data[0];
  SpreadsheetApp.flush();
  if(row[14] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
    dataRange.setFontColor("#000000");
  }
  else if(row[14] === "BEING USED") {
    dataRange.setBackgroundRGB(150, 185, 255);
    dataRange.setFontColor("#004BE1");
  }
}
function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
Run Code Online (Sandbox Code Playgroud)

还有第二个功能。

function onEdit(e) {
  var aCell = e.source.getActiveCell(), col = aCell.getColumn(); 
  if(col == 19 || col == 21) {
    var adjacentCell = aCell.offset(0, 1);  
    var newDate = Utilities.formatDate(new Date(), 
      "GMT+1", "dd/MM/yyyy");
    adjacentCell.setValue(newDate);
  }
}
Run Code Online (Sandbox Code Playgroud)

日期函数正在运行,但该colorRow函数不起作用,如果我删除日期脚本,那么colorRow它将起作用。

任何人都可以指出我正确的方向吗?好像我错过了什么

谢谢

Mog*_*dad 5

Barry Smith 关于“两个同名函数”的评论是对的;在这种情况下,只有第二个会执行。

您可以只拥有一个名为 的包含电子表格的函数onEdit()。如果要使用其他功能作为onEdit触发器,则需要将其设置为可安装触发器。

您可以使用对话框Resources -> Current Project's Triggers来安装第二个触发器。

截屏

或者,您可以只有一个onEdit()简单的触发器,但让它调用“子触发器”函数,将事件对象传递e给每个函数。

背景:触发器指南