为了账号安全,请及时绑定邮箱和手机立即绑定

Google 脚本中的增量日期

Google 脚本中的增量日期

HUX布斯 2023-05-25 16:10:53
我只想将单元格 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 A1var 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);}
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

问题/解释:

在这部分代码中:

date_new = date_given;

您传递了对的引用date_givendate_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_given返回相同的值。

为了将它们分开,您需要创建一个副本,其中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);


}


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信