我有一个谷歌表,称为“测试时间的东西”它使用脚本自动添加日期和时间(在列“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 回答
真的取决于你想要它的灵活性 . 如果您不关心用户是否会输入一个留空行的值然后再填入空行,那么这很容易 . 你需要做的就是
现在您需要确保使用实际的JavaScript
date
格式并简单地计算差异 . 您可以在其中一个示例here中阅读如何执行此操作 . 它基本上是一样的,只有你的start
和end
是由你设置前一个值的新值定义的 . 正如我所提到的,如果最后一个值让我们在行5
中输入并且有人在行7
中输入一个值然后在行6
中输入了某些内容,那么 not 将正常工作 . 行8
中的下一个条目仅考虑行7
而不是6
.要解决这个问题,您需要使用
.getValues()
获取所有值,然后循环遍历它们,选择哪个时间是最后一个,但是可以完成 . 只需要使用for
循环进行更多的调整