如何把一个细胞的天数从传递的具体日期。 例如:
列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)
}
这是一个可能的方式得到你想要的,我写的是一个自定义的功能,即你必须把它放在你希望它出现在表格单元格中的结果=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