如果值是日期,则清除相邻单元格的单元格值

Clear cell value of adjacent cell if value is a date

本文关键字:单元格 清除 日期 如果      更新时间:2024-04-08

我在谷歌应用程序脚本中编写这个脚本已经有一段时间了,我想我已经差不多明白了。不过,我真的需要另一双眼睛,因为它还没有完成。

我想做的事:

我正在写一张关于暂定日期和实际日期的表格。这两个日期在相邻的列中。一旦"实际"日期被填入单元格,我希望"暂定"日期被删除。

到目前为止,这是我的脚本:

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getRange('F4:F');
  var range2 = sheet.getRange('E4:E');
  var rule = range.getDataValidation();
  if (rule != null) {
    var criteria = rule.getCriteriaType();
    var args = rule.getCriteriaValues();
    var clear = range2.clear({validationsOnly: false});
    }
}

我需要做些什么才能运行这个脚本?

如果F列已填充,则似乎要删除E列中的值。如果是这样的话,我认为没有必要处理数据验证规则。以下脚本检查编辑的单元格是否位于F列,行>=4,并且单元格中的新值是否为日期。如果这些条件成立,则清除左侧的单元格(使用offset)。

function onEdit(e) {
  if (e.range.getColumn() == 6 && e.range.getRow() >= 4) {
    if (e.range.getValue() instanceof Date) {
      e.range.offset(0, -1).clear();
    }
  }
}

注意:此脚本使用传递给onEdit函数的事件对象。有趣的是,它的"value"属性在这里并不有用,因为即使用户输入日期,它也不是日期对象。这就是我所使用的e.range.getValue()