我一直在寻找一种能使两者相差两次的函数,幸运的是,这里的一个用户拥有一个看起来很漂亮的出色功能。 Code Reference
function getDaysHoursAndMinutes(){
var hd=new Date('2017-11-21T20:23:26+0000').valueOf();
var td=new Date().valueOf();
var sec=1000;
var min=60*sec;
var hour=60*min;
var day=24*hour;
var diff=td-hd;
var days=Math.floor(diff/day);
var hours=Math.floor(diff%day/hour);
var minutes=Math.floor(diff%day%hour/min);
Logger.log('%s days %s hours %s minutes',days,hours,minutes);
}
因此,我根据自己的喜好对它进行了一些调整。
function getDaysHoursAndMinutes(t1,t2){
var hd=new Date(t1).valueOf();
var td=new Date(t2).valueOf();
var sec=1000;
var min=60*sec;
var hour=60*min;
var day=24*hour;
var diff=td-hd;
var days=Math.floor(diff/day);
var hours=Math.floor(diff%day/hour);
var minutes=Math.floor(diff%day%hour/min);
创建了两个可以放置在函数中的变量。我这样做是为了使那些变量getValue(range)
但是也许我错过了一些东西,或者我不太了解代码,以至于无法确切地知道它是如何工作的。这是我得到的格式。
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName) {
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue()
}
setValue('F' + passiveRow, getDaysHoursAndMinutes(getValue('D' + passiveRow),getValue('E' + passiveRow)));
在这种情况下,passiveRow只是一个数字,它是与某些条件匹配的行。假设2
因此,我认为仅通过获取D2和E2的值即可,看起来像这样的值:5/15/2019 21:17:15, 5/15/2019 21:18:33
,它们将正确地实现到公式中,并且公式将返回到我的setValue函数中。因此,我按需logger.logged和Logger.log(minutes = 1)。我尝试了其他几次日志记录,但又得到了正确的数字。但是在F行的正确框中,它给出的是“ undefined”,而不是时差函数中Logger.log给我的数字。我觉得这是我看不到的非常明显的疏忽。