我意识到这可能很容易,但我是一个挣扎的新手。我在电子表格单元格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);
}
答案 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));
}