1

我有一个用于每周会议的 Google 表格。我目前有 A 列自动填写我在 B 列的框中输入任何内容的日期。由于我通常输入下一次会议的日期,而不是添加注释的日期,我想知道是否有可以添加的脚本这将使日期 X 和“四舍五入”到下一个会议日期。会议总是在星期三。

我正在四处寻找可以做到这一点的东西,但只是找到了如何四舍五入到最近的分钟,这并不像我需要的那样具体。

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

目前正在运行(来自 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);
  }
}
4

1 回答 1

0

只要您想要的每个日期都在星期三,将今天的日期格式化为日期的星期几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 到 JavaScript Datetoday.setDate(today.getDate() + diff);使用闰年和 DST 日期/时间进行测试。似乎是这种特殊用途的最优雅的工作解决方案。

于 2017-10-04T00:30:13.183 回答