自动时间戳自动更改为我下次每周会议的日期

时间:2017-10-03 22:33:53

标签: date google-sheets timestamp date-manipulation

我每周都会有一张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);
  }
}

1 个答案:

答案 0 :(得分: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); }

today.setDate(today.getDate() + diff);

修改:更新日期添加天数 - 来自Add days to JavaScript Date。闰年和夏令时日期/时间都经过测试db.getCollection('USER_COLLEC') . aggregate([ { "$unwind": "$movies" } , { $lookup: {from: "MOVIE_COLLEC", localField: "movies", foreignField: "_id", as: "movieContent"}, } , { $unwind: "$movieContent" }, {$sort: {"movieContent.duration":-1}}, { $project: { "user":"$name","duration" : "$movieContent.duration"} } , { $limit : 1 } 。似乎是这种特殊用途的最优雅的工作解决方案。