Google表格不会从其他脚本触发.appendRow()上的任何事件

时间:2014-06-30 17:47:48

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

我有一个脚本,用户输入一些信息并提交。提交时,我运行一个成功运行的.appendRow()。根据我的数据,我试图根据另一个单元格的值设置多个单元格的背景颜色。

实施例。如果J2是setBackgroundColor("yellow")用于J2:L2

我创建了一个附加到电子表格的脚本,我正在尝试创建一个触发器来执行此操作。我手动编辑电子表格时创建的触发器有效。但是,当我onEdit()时,onChange()appendRow()都无效。 appendRow()不会在电子表格中触发事件吗?

这是我的触发/事件脚本。

function onEdit(e){
  colorBasedOnStatus(e.range.getRow());
}

function colorBasedOnStatus(rowIndex) {
  Logger.log(rowIndex);
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log");
  var range = sheet.getRange("J"+rowIndex+":L"+rowIndex);
  var values = range.getValues();
  Logger.log(values);
  var status = values[0][0];
  Logger.log("status: " + status);

  range.setFontColor("white");
  if(status === "Denied"){
    range.setBackground("#FF6666");
  } else if(status == "Approved") {
    range.setBackground("#66C285");
  } else {
    range.setBackground("#FFE271");
  }

  SpreadsheetApp.flush();
}

1 个答案:

答案 0 :(得分:0)

我认为您可以简单地让该脚本调用您的colorBasedOnStatus(rowIndex)函数而无需任何触发器,并直接集成到您用于追加新行的函数中。

这样您就不需要任何触发设置,您的代码也会变得更简单。