【问题标题】:Insert or delete a timestamp based on cell value根据单元格值插入或删除时间戳
【发布时间】:2022-01-21 15:31:07
【问题描述】:

使用此脚本,我可以根据 col E 中的“SI”在 col G 中自动创建时间戳。
现在我会这样:
1 - 当我删除 col E 中的现有值“SI”时,必须删除时间戳
2 - 因此,如果我在 col E 中输入与“SI”不同的值,则必须删除时间戳
我该如何继续?

function onEdit(e){
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "STAMPA2" )
  if(e.range.columnStart == 5 && e.value === 'SI'){
     e.range.offset(0,2).setValue(new Date());
  }
}

更新: 根据 Cooper 和 Tanaike 的回答,我已经用这个编辑了脚本,但问题是当在 col G 中选择“URGENTE”时,col E 中的值变为“URGENTE”,但是如果我在带有“SI”的 col G 日期格式仅为 dd/mm/yyyy 而不是 dd/mm/yyyy - HH:MM(我需要)。
如何解决?

function onEdit(e) {
  var s = e.range.getSheet();
  if (s.getName() == "STAMPA2" && e.range.columnStart == 5) {
    if (e.value == 'SI') {
      e.range.offset(0, 3).setValue(new Date());
    } else {
      e.range.offset(0, 3).setValue('');
    }
    if (e.value == 'URGENTE') {
      e.range.offset(0, 3).setValue('URGENTE');
    }
  }
} 

【问题讨论】:

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


    【解决方案1】:

    我相信你的目标如下。

    • SI 的值放入“E”列时,您希望将当前日期放入“G”列。
    • SI的值没有放到“E”列时,你想删除“G”列的值。

    这样的话,下面的修改怎么样?

    修改脚本:

    function onEdit(e) {
      var { range, value } = e;
      var s = range.getSheet();
      if (s.getName() == "STAMPA2" && range.columnStart == 5) {
        range.offset(0, 2).setValue(value === 'SI' ? new Date() : "");
      }
    }
    

    function onEdit(e) {
      var { range } = e;
      var s = range.getSheet();
      if (s.getName() == "STAMPA2" && range.columnStart == 5) {
        range.offset(0, 2).setValue(range.getValue() === 'SI' ? new Date() : "");
      }
    }
    

    补充:

    对于您更新的问题,以下示例脚本怎么样?

    function onEdit(e) {
      var { range, value } = e;
      var s = range.getSheet();
      if (s.getName() == "STAMPA2" && range.columnStart == 5) {
        var r = range.offset(0, 2);
        if (value == 'SI') {
          r.setValue(new Date()).setNumberFormat('dd"/"MM"/"yyyy" "HH":"mm');
        } else if (value == 'URGENTE') {
          r.setValue('URGENTE');
        } else {
          r.clearContent();
        }
      }
    }
    
    • 在此示例中,日期对象以dd"/"MM"/"yyyy" "HH":"mm 的日期格式放置。
    • 如果你想把日期作为字符串,你也可以用r.setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yyyy HH:mm"))代替r.setValue(new Date()).setNumberFormat('dd"/"MM"/"yyyy" "HH":"mm')

    【讨论】:

    • 我已经更新了问题,请看顶部。
    • @Gavis 感谢您的回复。关于您更新的问题,我又添加了一个示例脚本。你能确认一下吗?如果我误解了您更新的问题并且没有用,我深表歉意。
    • 完美!效果很好
    • @Gavis 感谢您的回复和测试。很高兴您的问题得到解决。
    猜你喜欢
    • 2020-01-30
    • 2019-06-13
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2012-04-01
    • 2022-01-09
    相关资源
    最近更新 更多