我正在尝试计算两个日期之间的天数差
它将是NOW() -以下示例中数据中列出的日期,第一行(2019-03-08 - 2018-10-31) = 128天
Dates Days Regions
2018-10-31 128 Alberta
2018-10-31 128 Alberta
2018-11-8 120 Alberta
2018-11-18 110 Alberta数据集如下所示
问题是,每当用户更新"Dates“列时,我都会尝试计算出这个值。
下面是我尝试过的代码
function dategenerator() {
const numberofHeaderRows=1
var spreadsheet = SpreadsheetApp.getActiveSheet()
var range = spreadsheet.getRange("A:A")
var legitrange = spreadsheet.getDataRange().getValues()
var rangeValuesInclHeaders = range.getValues()
var rangeValuesExclHeaders = rangeValuesInclHeaders.slice(numberofHeaderRows)
var dates=rangeValuesExclHeaders.map(function(row){return row[0]})
for (var rowNumber=numberofHeaderRows;rowNumber<rangeValuesInclHeaders.length;rowNumber++){
var row = rangeValuesInclHeaders[rowNumber]
if (row[0]!==""){
var dates = new Date(row[0])
var datesnew = new Date()
var t1 = datesnew.getTime()
var t2 = dates.getTime()
var diffInDays = Math.floor((t1 - t2)/(1000*60*60*24))
Logger.log(diffInDays)
spreadsheet.getRange(1,2,legitrange.length,1).setValue(diffInDays);
}
}
}我在"diffInDays“下面看到了正确的值,但是,它只提取最后一个值,如下所示……
Dates Days Regions
2018-10-31 110 Alberta
2018-10-31 110 Alberta
2018-11-8 110 Alberta
2018-11-18 110 Alberta我们如何正确地执行此操作,以便它可以将计算出的值附加到正确的日期行?
发布于 2019-03-09 03:00:04
计算第一列发生变化时的天数
function diffInDays(Start,End)
{
if(Start && End)
{
var second=1000;
var minute=60*second;
var hour=minute*60;
var day=hour*24;
var t1=new Date(Start).valueOf();
var t2=new Date(End).valueOf();
var d=t2-t1;
var days=Math.floor(d/day);
return days;
}
else
{
throw('Invalid Inputs');
}
}
function onEdit(e) {
if(e.range.getSheet().getName()!='SheetName'){return;}//add sheetName
if(e.range.columnStart==1 && e.value){
e.range.offset(0,1).setValue(diffInDays(e.value,new Date());
}
}将第一列的格式设置为日期时间
https://stackoverflow.com/questions/55067189
复制相似问题