尝试将一个单元格设置为函数的值以获得两次的差

时间:2019-05-16 04:41:23

标签: google-apps-script

我一直在寻找一种能使两者相差两次的函数,幸运的是,这里的一个用户拥有一个看起来很漂亮的出色功能。 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给我的数字。我觉得这是我看不到的非常明显的疏忽。

0 个答案:

没有答案