首页 > 解决方案 > 当函数仅限于特定列时,为什么撤消会触发我的 onEdit()?

问题描述

我将这个 onEdit() 函数限制为在某些工作表的第一列中进行修改。我的问题是,当我在 onEdit() 范围之外按“撤消”或“Ctrl + Z”时,“撤消”会触发该函数并使用 .clearContent() 清除某些行。

为什么“撤消”这样做?我没有修改第一列。日志如下所示:

[18-10-03 10:41:09:166 VET] onEdit
[18-10-03 10:41:09:167 VET] event {authMode=LIMITED, range=Range, source=Spreadsheet, user=name.lastname@company.com}   -   A3:A22   -  true

这是我的功能:

function onEdit(e){

  init()

  if (e.range.getSheet().getName() == htSheet.getName()) {
    if ((e.range.getColumn() == 1) && (e.range.getRow() >= StartRowHT) && (typeof e.value == "string")){
      Logger.log("fired")
      onSelectTask(e)
    } else if ((e.range.getColumn() == 1) && (typeof e.value != "string")){
      //clean row

      var rowIndex = e.range.getRow()

      range1 = "B" + rowIndex + ":G"  + rowIndex
      range2 = "I" + rowIndex + ":ZZ" + rowIndex

      htSheet.getRangeList([range1, range2]).clearContent()
    }
    Logger.log("onEdit")
    Logger.log("event %s   -   %s   -  %s", e, e.range.getA1Notation(), typeof e.value != "string")
  }
}

function init() {
  taskRange = htSheet.getRange(StartRowHT, 1,  (calendar.getLastRow() - StartRowCal + 1))

  var rule   = SpreadsheetApp.newDataValidation().requireValueInRange(sheetname.getRange("H4:H1000"), true).build()

  taskRange.setDataValidation(rule)
}

预先感谢您的帮助。

标签: google-apps-scriptgoogle-sheets

解决方案


推荐阅读