在Google表格中重复第4列的时间戳记

问题描述 投票:0回答:2

我需要我的团队在A列中输入他们的姓名,在B列中输入LOGIN或LOGOUT,在C列中需要登录时间戳,在D列中需要注销时间戳。我需要在每个字段中重复30天(一个月)工作表,这意味着B,C和D列将在工作表中重复30次。

名称-登录/注销-登录时间戳-退出时间戳

我在YouTube中找到了此代码(经过了微调),该代码在第二列和第三列中创建了两个时间戳记,第二列在第1列更新时更新为新时间,而第一列保持不变。我计划通过在用户输入LOGIN时隐藏第二个时间戳(使用条件格式)来使用此标记,然后在用户输入LOGOUT时取消隐藏它。但是,我不知道以后几天如何将此脚本调用到第4列。我花了整整一整天的时间才弄清楚这一点,但是我的脚本知识非常有限。任何帮助是极大的赞赏。非常感谢。

function onEdit(e) {

  var row = e.range.getRow();
  var col = e.range.getColumn();

  if(col === 1 && row >= 1 && e.source.getActiveSheet().getName() === "Test"){

  var currentDate = new Date();
  e.source.getActiveSheet().getRange(row,3).setValue(currentDate);
  if(e.source.getActiveSheet().getRange(row,2).getValue() == ""){
  e.source.getActiveSheet().getRange(row,2).setValue(currentDate);
  }
 }
}

google-apps-script google-sheets timestamp repeat
2个回答
0
投票

答案:

检查已编辑行的C列是否为空白;如果是,将currentDate放在第3列中。如果不是,请将其放在第4列中。

代码:

function onEdit(e) {  
  var row = e.range.getRow();
  var col = e.range.getColumn();

  if(col === 2 && row >= 1 && e.source.getActiveSheet().getName() === "Test") {
    var currentDate = new Date();
    if (e.source.getActiveSheet().getRange(row, 3).isBlank() === true) {
      e.source.getActiveSheet().getRange(row, 3).setValue(currentDate);
    }
    else {
      e.source.getActiveSheet().getRange(row, 4).setValue(currentDate);
    }
  }
}

希望对您有帮助!

参考:


0
投票

您只需要更新列值。为了使您更容易理解要编辑的单元格,我创建了Range.isBlank()status_col

login_ts_col
© www.soinside.com 2019 - 2024. All rights reserved.