2015-02-07 122 views
1

每当用户在评论列中输入数据时,我都会尝试自动更新日期列(格式设置为日期)。Utilities.formatDate显示错误日期

所以我发现有人写这个脚本,它工作得很好。突然间它今天突然停止工作。

function UpdateDate() { 
var s = SpreadsheetApp.getActiveSheet(); 
if(s.getName() == "Sheet1") { 
    var r = s.getActiveCell(); 
    if(r.getRow() > 2 && r.getColumn() == 6 && r.getValue()) { 
    var nextCell = r.offset(0, -1); 

     var time = new Date(); 
    time = Utilities.formatDate(new Date(), "EST-05:00", "MM-DD-YY"); 
     nextCell.setValue(time); 
    }; 
}; 
} 

每当我更新评论部分现在我得到2/35/15,这显然是不正确的。我无法弄清楚是什么原因造成了这个问题。任何援助将不胜感激。

回答

0

我把你的代码的日期部分更改为:而且它似乎正在工作。

function UpdateDate() { 
    var s = SpreadsheetApp.getActiveSheet(); 

    var stringAsDate = ""; 
    stringAsDate = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-yy"); 
    Logger.log(stringAsDate); 
} 

完整的代码是:

function UpdateDate() { 
var s = SpreadsheetApp.getActiveSheet(); 

if(s.getName() == "Sheet1") { 
    var r = s.getActiveCell(); 
    if(r.getRow() > 2 && r.getColumn() == 6 && r.getValue()) { 
    var nextCell = r.offset(0, -1); 

    var stringAsDate = ""; 
    stringAsDate = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-yy"); 
    nextCell.setValue(stringAsDate); 
    }; 
}; 
} 

你不需要time变量。 Utilities.formatDate()返回一个字符串,所以没有意义将变量time设置为日期类型。

+0

我只是试过了代码,它的工作原理!谢谢。 DD和dd有区别吗?为什么它在突然停止工作之前工作得很好? – User125 2015-02-07 03:38:35

+0

我不知道。也许他们将底层代码改为'Utilities.formatDate()'?我只是使用小写,因为这是文档显示的内容。不知道它是否有所作为。 – 2015-02-07 03:45:25

1

D是同一天,而d是月份的日期。 DDdd是零填充版本。你有可能要求在1月份的第300天。

time = Utilities.formatDate(new Date(), "EST-05:00", "MM-dd-YY"); 

该应用程序脚本使用的spec是根据Java。