遇到条件时的时间戳

时间:2015-05-26 15:17:36

标签: google-sheets

我目前有一个与其他4个人共享的主文档。现在,我有一个公式,当列K具有“已关闭”或“同一天关闭”时,时间标记列L与今天的日期。我们发现的是,有时候时间戳是不准确的,并且会反映今天关于上周发生的结束日期。我相信这是因为有这么多人访问这个,对吗?这是我目前正在使用的公式:

=IF(OR(K34="Closed",K34="Same Day Close"),TODAY(),"")

所以我认为最好先编写一个脚本,这样时间戳就不会受到多个用户在不同时间访问文档的影响。它正在发挥作用,但它并没有完全按照我的需要去做。这是脚本:

function onEdit(e) {
  var ss = e.source;
  var activatedSheetName = ss.getActiveSheet().getName();
  var activatedCell = ss.getActiveSelection();
  var activatedCellRow = activatedCell.getRow();
  var activatedCellColumn = activatedCell.getColumn();
  var activatedCellValue = activatedCell.getValue();

  var greg = ss.getSheetByName("Greg"); // source sheet
  var greg = ss.getSheetByName("Greg"); // target sheet

  // if the value in column D is "Approved", move the row to target sheet
  if (activatedSheetName == greg.getName() && activatedCellColumn == 11 && activatedCellValue == "Closed") {
  // add date and time of when approved to target row in column E
    greg.getRange('l' + activatedCellRow).setValue(Date(TODAY));
  }
}

以下是我不需要做的事情:

  1. 我不希望时间戳包含除今天之外的任何内容 以mm / dd / yyyy格式显示日期(此时它还包括时间)
  2. 我需要“已关闭”以及“同一天关闭”以触发时间戳
  3. 我需要将代码应用于多个工作表,而不仅仅是“Greg”
  4. 提前非常感谢!这是我第一次尝试实现一个脚本,而且我已经玩了几天而无济于事。我很感激你的时间。

1 个答案:

答案 0 :(得分:0)

试试这个脚本:

function onEdit(e) {
if (e.range.columnStart !== 11 || e.value !== 'Close' && e.value !== 'Same Day Close') return;
e.range.offset(0, 1)
    .setValue(new Date())
}

注意:为了摆脱时间,只需将列L格式化为' DATE' (通过菜单中的123按钮)。