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

Google sheet doesn't trigger any events on .appendRow() from other script

本文关键字:appendRow 事件 任何 工作 脚本 其他 Google      更新时间:2023-09-26

我有一个脚本,用户可以在其中输入一些信息并提交。提交时,我运行了一个成功运行的.appendRow()。使用我拥有的数据,我正在尝试根据另一个单元格的值为多个单元格设置背景颜色。

前任。如果 J2 对于 J2:L2 setBackgroundColor("yellow")

创建了一个附加到电子表格的脚本,我正在尝试在其中创建一个触发器来执行此操作。我创建的触发器在手动编辑电子表格时有效。但是,当我appendRow()时,onEdit()onChange()都没有工作。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();
}

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

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