代码之家  ›  专栏  ›  技术社区  ›  emmalo

自动时间戳自动更改为下一周会议的日期

  •  1
  • emmalo  · 技术社区  · 7 年前

    例如,我的上次会议是9月27日。我希望在9月27日之后在B列中输入的任何内容都显示10月4日的时间戳,即使我在10月2日或10月3日将其输入表中。

    function onEdit(event)
    { 
      var timezone = "GMT-5";
      var timestamp_format = "MM/dd/yyyy";  
      var updateColName = "Item";
      var timeStampColName = "Date";
      var sheet = event.source.getSheetByName('Agenda'); 
    
    
      var actRng = event.source.getActiveRange();
      var editColumn = actRng.getColumn();
      var index = actRng.getRowIndex();
      var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues();
      var dateCol = headers[0].indexOf(timeStampColName);
      var updateCol = headers[0].indexOf(updateColName); updateCol = updateCol+1;
      if (dateCol > -1 && index > 1 && editColumn == updateCol) { 
        var cell = sheet.getRange(index, dateCol + 1);
        var date = Utilities.formatDate(new Date(), timezone, timestamp_format);
        cell.setValue(date);
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   random-parts    7 年前

    只要您想要的每个日期都是星期三,就用 日期的周数 today() 接下来呢 3 - wednesday

    function onEdit(event)
    { 
      ...
      var today = new Date();
    
      // Today as day of week by number - 1 Monday...0 Sunday
      var day_of_week = today.getDay();
    
      // Find the diff in days until next Wednesday
      var diff = day_of_week > 3 ? 10 - day_of_week : 3 - day_of_week;
    
      // Add `diff` amount of days to today
      today.setDate(today.getDate() + diff);
      ...
    
      cell.setValue(today);
    }
    

    编辑: Add days to JavaScript Date today.setDate(today.getDate() + diff); 包含闰年和夏令时日期/时间。似乎是这一特定用途最优雅的工作解决方案。

    推荐文章