Google脚本 - 为日期添加天数

时间:2018-02-27 21:27:16

标签: google-apps-script google-sheets

我意识到这可能很容易,但我是一个挣扎的新手。我在电子表格单元格D3,D4和D5(mm / dd / yyyy)中有日期,只需要一个宏来为它们添加7天。我设法将一些可能正常工作的代码拼凑在一起,但输出是毫秒而不是mm / dd / yyyy格式。

我似乎无法正确转换语法。任何提示?谢谢!

function UpdateDates() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var First = new Date();
  var Second = new Date();
  var Third = new Date();

  var First = ss.getRange('D3').getValue();
  var Second = ss.getRange('D4').getValue();
  var Third = ss.getRange('D5').getValue();


  ss.getRange('D3').setValue(First.getTime() + 7);
  ss.getRange('D4').setValue(Second.getTime() + 7);
  ss.getRange('D5').setValue(Third.getTime() + 7);

}

1 个答案:

答案 0 :(得分:0)

添加天数提供了一个独特的挑战,主要是因为您必须照顾年,月和日期。并相应地增加每个,因此只使用getDate()不起作用。您需要跟踪月份和年份。如果添加七天改变月份或年份,则更改它们。

但是,通过使用getTime(),您可以获得自1970年1月1日以来以毫秒为单位的时间度量。并且,以毫秒为单位添加7天,并使用new Date()构造函数将其转换回日期。因此构造函数将根据时间计算出正确的日期。

您的代码将如下所示:

function UpdateDates() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Get the dates from the cell and convert them into Milliseconds since 1970/01/01
  var First = new Date(ss.getRange('D3').getValue()).getTime();
  var Second = new Date(ss.getRange('D4').getValue()).getTime()
  var Third = new Date(ss.getRange('D5').getValue()).getTime();
  var dayInMs = 24*60*60*1000    //one day in Milliseconds
  //add sevendays to each date in milliseconds

  First = First + (7*dayInMs)
  Second += (7*dayInMs)
  Third += (7*dayInMs)

  //Convert Milliseconds to date use new Date(time in ms) and set Values of the cell
  ss.getRange('D3').setValue(new Date(First));
  ss.getRange('D4').setValue(new Date(Second));
  ss.getRange('D5').setValue(new Date(Third));

}