使用谷歌的脚本在电子表格中插入两个天之间的结果计数(Insert the result count

2019-09-03 22:23发布

如何把一个细胞的天数从传递的具体日期。 例如:

列1:使用功能新的日期()2013年12月5日18:00:00实际天数列2:该脚本将插入的天数(今天 - 列1)= 4

该脚本应在第2列的天数从通今日插入。 今天是16/05/2013 23:00,该脚本将插入4.如果可能的,因为这个?

我会很感激,如果你能帮助我。

这个功能是由朋友通过,但我觉得不工作,因为该日期不是以毫秒为单位,但结果在小区应天数

    }
    function formatting2(event) {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // get the sheet
      var columnF = sheet.getRange(2, 1, sheet.getLastRow()-1, 1);
      var updateage = sheet.getRange(2, 2, sheet.getLastRow()-1, 1);
      var fValues = columnF.getValues(); // get the values
      var result = new Date();

      updateage.setValue(result-fValues)
    }  

Answer 1:

这是一个可能的方式得到你想要的,我写的是一个自定义的功能,即你必须把它放在你希望它出现在表格单元格中的结果=dayToToday()

这里是一些日志和评论的脚本来显示中间值。

function dayToToday(x){
  var sh = SpreadsheetApp.getActiveSheet();
  Logger.log(sh.getActiveCell().getRowIndex())
  var refcell = sh.getRange(sh.getActiveCell().getRowIndex(),1).getValue();;// get value in column A to get the reference date
  var refTime = new Date(refcell);
  var ref = refTime.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var today = new Date();
  var TD = today.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var day = parseInt(TD-ref);// get the difference in days (integer value )
  return day ; // return result that will be in cell
}

编辑:如果我理解你的使用情况,我建议你放弃自定义函数的形式给出了(我从来没有使用,因为我不喜欢它这么多),然后转到此解决方案使用一个定时器触发和/或更新值的菜单你在一个批次的电子表格。

(PS:抱歉,没有答案的速度不够快......太忙这些天:-)

function onOpen() {
  var menuEntries = [ {name: "test function", functionName: "toTrigger"},
                     ];
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.addMenu("test menu",menuEntries);//
}

// create a timer trigger that will call "toTrigger" every 15 minutes

function toTrigger(){
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getRange(1,1,sh.getLastRow(),2).getValues();
  for(var n=0;n<data.length;++n){
  if(typeof(data[n][0])=='object'){
    data[n][1]=dayToToday(data[n][0])
      }
    }
   sh.getRange(1,1,sh.getLastRow(),2).setValues(data) 
}




function dayToToday(x){
  var refcell = x;;// get value in column A to get the reference date
  var refTime = new Date(refcell);
  var ref = refTime.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var today = new Date();
  var TD = today.setHours(0,0,0,0)/(24*3600000);// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var day = parseInt(TD-ref);// get the difference in days (integer value )
  return day ; // return result that will be in cell
}

第二编辑

当使用var data = sh.getRange(1,1,sh.getLastRow(),2).getValues();

在getRange数字是起始行,起始列,行数,列数,所以你不得不骑上包括要列一个范围,然后使用数据[N] [得到columnnumber-1]得到相应的价值。 (-1,因为数组从0开始,列从1数(A其实不过是一首列;-))如果你需要一个变量引用然后让我知道,因为功能必须进行修改,以接受2个变量(一个ref和另一个)。


最后的编辑 (我希望)

我改变了一些细节...见[9]和[5]索引对应至J和F

function toTrigger(){
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getRange(1,1,sh.getLastRow(),sh.getLastColumn()).getValues();
  for(var n=0;n<data.length;++n){
  if(typeof(data[n][9])=='object'){
    data[n][5]=dayToToday(data[n][9])
      }
    }
   sh.getRange(1,1,data.length,data[0].length).setValues(data) 
}

更新/编辑

结果以小时(以下在注释请求)

function hoursToToday(x){
  var refcell = x;;// get value in column A to get the reference date
  var refTime = new Date(refcell);
  var refhrs = refTime.getHours();
  var ref = refTime.setHours(refhrs,0,0,0)/3600000;// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var today = new Date();
  var todayHrs = today.getHours()
  var TD = today.setHours(todayHrs,0,0,0)/3600000;// set hours, minutes, seconds and milliseconds to 0 if necessary and get number of days
  var hrs = TD-ref;// get the difference in days (integer value )
  return hrs ; // return result that will be in cell
}



文章来源: Insert the result count number of days between two days in spreadsheet using google script