两个OnEdit函数不能一起工作

时间:2014-11-20 01:14:06

标签: google-apps-script google-sheets

我在Google电子表格上有两个onEdit()函数。但似乎一个功能一次正在运作。

第一个函数是用于为所有行着色的脚本,第二个函数是用于根据列编辑在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();

第二个功能。

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);
  }
}

日期功能正常,但colorRow功能不起作用,如果删除日期脚本,则colorRow将起作用。

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

由于

2 个答案:

答案 0 :(得分:3)

巴里史密斯评论&#34;两个同名的职能&#34;是正确的;只有第二个会在那种情况下执行。

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

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

screenshot

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

背景:Guide to Triggers

答案 1 :(得分:2)

我可能会误解,但看起来你有两个不同的功能,名称完全相同。这不可能发生,因为第二个基本上覆盖了第一个。给出不同的名称,它应该有用。