Google 脚本中的增量日期

Increment date in Google Script

我只想将单元格 A1 中的给定日期增加 1 天。我需要两个单独的变量,一个用于给定日期,一个用于新的递增日期。问题是,我的代码总是更改两个变量,我不知道为什么。

function testDate() {

var sht_test = SpreadsheetApp.getActive().getSheetByName('Test');
var date_given = sht_test.getRange(1,1).getValue(); // type a Date in cell A1
var date_new;

date_new = date_given;
date_new = new Date(date_new.setDate(date_new.getDate() +1 ));  

sht_test.getRange(2,1).setValue(date_new);
sht_test.getRange(2,2).setValue(date_given);

}

问题/解释:

在这部分代码中:

date_new = date_given;

您将 date_givenreference 传递给 date_new

即,您对 date_new 所做的任何更改都会自动应用于 date_given,因为它们引用 相同 日期对象。

当您将日期递增 1 时:

date_new = new Date(date_new.setDate(date_new.getDate() +1 ));

部分:date_new.setDate(date_new.getDate() +1 )

增量(更改)date_new 因此 date_given 也被修改,因为它们都引用同一个对象。

这就是为什么date_newdate_givenreturn值相同的原因。

为了将它们分开,您需要创建一个 date_given 的副本,这将是一个新的日期对象:

date_new = new Date(date_given);

因此,如果您稍后修改 date_newdate_given 将不会被修改。


解决方案:

function testDate() {

var sht_test = SpreadsheetApp.getActive().getSheetByName('Test');
var date_given = sht_test.getRange(1,1).getValue(); // type a Date in cell A1
var date_new;

date_new = new Date(date_given);
date_new = new Date(date_new.setDate(date_new.getDate() +1 ));  

sht_test.getRange(2,1).setValue(date_new);
sht_test.getRange(2,2).setValue(date_given);

}