首页 文章

我需要计算谷歌表中的时差

提问于
浏览
0

我有一个谷歌表,称为“测试时间的东西”它使用脚本自动添加日期和时间(在列“B”),任何时候你添加一个条目到事件列 .

这是剧本......

function onEdit(event)
{ 
  var timezone = "GMT-5";
  var timestamp_format = "E,M/dd H:mm a"; // Timestamp Format. 
  var updateColName = "event";
  var timeStampColName = "date / time";
  var sheet = event.source.getSheetByName('Sheet1'); //Name of the sheet 
where you want to run this script.


  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) { // only 
timestamp if 'Last Updated' header exists, but not in the header row itself!
    var cell = sheet.getRange(index, dateCol + 1);
     var date = Utilities.formatDate(new Date(), timezone, 
 timestamp_format);
    cell.setValue(date);
   }
}

当我这样做时,我希望“事件之间的小时和分钟时间”自动显示该列中的小时和分钟时间 . 我怎么能做到这一点?谢谢 .

这是表格的链接......

https://docs.google.com/spreadsheets/d/1eyrAzpOFKxDHxs05DYovx3NMrl6XaofXsR24Yt9UzlM/edit?usp=sharing

这是一个可以编辑的工作表链接...

https://docs.google.com/spreadsheets/d/1RqpVOsy2bzgqnhFHV7m1sae10o9pHA5cdEJ5Ijvl2C8/edit?usp=sharing

1 回答

  • 1

    真的取决于你想要它的灵活性 . 如果您不关心用户是否会输入一个留空行的值然后再填入空行,那么这很容易 . 你需要做的就是

    var prevEvent = sheet.getRange(sheet.getLastRow(), 2).getValue() //get the previous event time
    

    现在您需要确保使用实际的JavaScript date 格式并简单地计算差异 . 您可以在其中一个示例here中阅读如何执行此操作 . 它基本上是一样的,只有你的 startend 是由你设置前一个值的新值定义的 . 正如我所提到的,如果最后一个值让我们在行 5 中输入并且有人在行 7 中输入一个值然后在行 6 中输入了某些内容,那么 not 将正常工作 . 行 8 中的下一个条目仅考虑行 7 而不是 6 .

    要解决这个问题,您需要使用 .getValues() 获取所有值,然后循环遍历它们,选择哪个时间是最后一个,但是可以完成 . 只需要使用 for 循环进行更多的调整

相关问题