【问题标题】:Automatic timestamp when a cell is modified, but that clears when the cell is empty修改单元格时的自动时间戳,但在单元格为空时清除
【发布时间】:2020-07-01 14:16:06
【问题描述】:

我有这段代码,我正在尝试在底部添加一些代码,说明如果该列为空,则日期列将清除。

function onEdit(e) {
  
  var ss = SpreadsheetApp.getActiveSheet();
  var r = ss.getActiveCell();
  //1.Change 'Ark 1' to be matching your sheet name
  
  if (r.getColumn() == 4 && ss.getName()=='Ark 1') { // 2. If Edit is done in  column 4 (D)  And sheet name is Ark 1 then:
    var celladdress ='L'+ r.getRowIndex() 
    ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy hh:mm");}
 
};

L 是我的日期时间戳所在的列,而第 4 (D) 列是修改完成的列。

【问题讨论】:

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


    【解决方案1】:

    您没有在问题中解释您的意思是整列为空还是活动单元格。

    无论如何:

    • 要验证单元格不为空或仅包含空格,您必须查询if(r.getValue() !="" && r.getValue() !=" ")
    • 取决于结果 - 您可以在 L 列的活动行中设置时间图,或者使用 ss.getRange(celladdress).clear(); 清除 L 列中相应单元格的内容

    下面是一个示例:

    function onEdit(e) {
      
      var ss = SpreadsheetApp.getActiveSheet();
      var r = ss.getActiveCell();
      //1.Change 'Ark 1' to be matching your sheet name  
      if (r.getColumn() == 4 && ss.getName()=='Ark 1') { // 2. If Edit is done in  column 4 (D)  And sheet name is Ark 1 then:
        var celladdress ='L'+ r.getRowIndex();
        if(r.getValue() !="" && r.getValue() !=" "){
          ss.getRange(celladdress).setValue(new Date()).setNumberFormat("dd/MM/yyyy hh:mm");
        } else{
          ss.getRange(celladdress).clear();
        }
      }
    }
     
    

    【讨论】:

    • 我希望在清除同一行中第 4 (D) 列的文本时清除 L 列中的时间戳。
    • 我不认为该解决方案有效,因为原始代码设置为在每次修改列时提供时间戳。我认为这会覆盖if(r.getValue() !="" || r.getValue() !=" ") 代码。当我清除第 4 列中的输入时,时间戳会更新,因为它会将修改计数为 else{ ss.getRange(celladdress).clear(); }
    • 抱歉,应该是 && 而不是 || - 现在更新!
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多