代码之家  ›  专栏  ›  技术社区  ›  K Roberts

onEdit脚本运行第一部分,但不运行第二部分

  •  0
  • K Roberts  · 技术社区  · 11 月前

    我有一张表,我想根据两个不同单元格中的条目添加日期。因此,当一个人添加他们的名字时,它会添加一个开始日期,当他们将状态更改为完成时,它还会添加一个结束日期。

    我最初把它们放在单独的脚本中,注意到列表中第二个脚本有效,但另一个无效。所以我试图把它们组合成一个,现在第一部分(名字加上开始日期)有效,但第二部分无效。

    到目前为止,我还不知道我做错了什么,但这是一次全新的体验!谢谢你的帮助!

    function onEdit (e) {
      var range = e.range;
      var sheet = range.getSheet();
    
    //set start date when owner is entered  
      if (range.getColumn() == 3 && sheet.getName() === "Projects"){
        var ownerCell = range.getValue();
    
        if (ownerCell !=="") {
          var startdateCell = range.offset(0,5);
          var currentDate = new Date();
          startdateCell.setValue(currentDate);
        } else {
          range.offset(0,5).clearContent();
        }
        
    //set end date when completed is selected
      if (range.getColumn() == 6 && sheet.getName() === "Projects"){
        var statusCell = range.getValue();
    
        if (statusCell ==="Complete") {
          var enddateCell = range.offset(0,3);
          var finishDate = new Date();
          enddateCell.setValue(finishDate);
        } else {
          range.offset(0,3).clearContent();
        }
    
      }
    }
    }
    
    1 回复  |  直到 11 月前
        1
  •  0
  •   Jats PPG    11 月前

    为什么 second part doesn't work 是因为 if (range.getColumn() == 6 && sheet.getName() === "Projects") 在里面 if (range.getColumn() == 3 && sheet.getName() === "Projects") .

    要解决此问题,请移动 if(range.getColumn()==6&&sheet.getName()===“项目”) 因此,这两种情况都是独立检查的。

    完整代码:

    function onEdit(e) {
      var range = e.range;
      var sheet = range.getSheet();
    
      if (range.getColumn() == 3 && sheet.getName() === "Projects") {
        var ownerCell = range.getValue();
    
        if (ownerCell !== "") {
          var startdateCell = range.offset(0, 5);
          var currentDate = new Date();
          startdateCell.setValue(currentDate);
        } else {
          range.offset(0, 5).clearContent();
        }
      }
    
      if (range.getColumn() == 6 && sheet.getName() === "Projects") {
        var statusCell = range.getValue();
    
        if (statusCell === "Complete") {
          var enddateCell = range.offset(0, 3);
          var finishDate = new Date();
          enddateCell.setValue(finishDate);
        } else {
          range.offset(0, 3).clearContent();
        }
      }
    }
    

    输出:

    注:仅用于视觉输出。

    Output