自动时间戳 auto-change 到我下一次每周会议的日期

Automatic time stamp auto-change to the date of my next weekly meeting

我有一个 Google Sheet 每周例会。我目前让 A 列自动填写我在 B 列的框中输入任何内容的日期。由于我通常输入下次会议的日期,而不是添加注释的日期,所以我想知道是否可以添加脚本这将使日期 X 和 'round up' 到下一个会议日期。会议总是在星期三举行。

我正在四处寻找执行此操作的方法,但只找到了如何四舍五入到最近的分钟数,这并不像我需要的那么具体。

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

目前运行这个(来自internetgeek.org):

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);
  }
}

只要你想要的每个日期都是星期三,用 日期的星期几 格式化今天的日期,找出与 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); 闰年和 DST dates/times。似乎是针对此特定用途的最优雅的工作解决方案。