2015-02-07 136 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。