![](/img/trans.png)
[英]Utilities.formatDate() in Google Apps Script outputs previous date (e.g. input 25.05.2015 -> output 24.05.2015)
[英]Google Apps Script date format issue (Utilities.formatDate)
我對Google Apps腳本很陌生,所以請耐心等待。
我正在從Google Sheets上的銀行收取每日利率,我使用以下代碼為A5:F5中包含的費率添加新行,其中A列包含日期。
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Interest Rates");
var source = sheet.getRange("A5:F5");
var values = source.getValues();
values[0][0] = Utilities.formatDate(new Date(), "GMT+10:00", "yyyy-MM-dd");
sheet.appendRow(values[0]);
};
我的問題是 - 盡管我已將日期格式指定為“yyyy-MM-dd”,但我的新行中A列中的日期是以“M / dd / yyyy”格式創建的。
我已經嘗試使用Google表格中的下拉格式菜單將整個列A預格式化為“yyyy-MM-dd”,但如果我運行上面的代碼,我的新行仍然是“M / dd / yyyy”。
好像我的代碼完全忽略了Utilities.formatDate。 僅供我從這里獲得上述代碼。
Utilities.formatDate()
實用程序格式化javascript字符串。 但是,當寫入電子表格時,Google表格會解釋新的數據行,以確定數據類型和適當的格式,就像您通過用戶界面輸入一樣。
由於您有一個可識別的日期字符串,因此Google表格決定它是一個日期,將其存儲,並應用默認日期格式。
您有兩種方法可以使電子表格中的日期符合您的格式需求。
強制它被解釋為String,即使它看起來像日期。
cell.setValue(Utilities.formatDate(new Date(), "GMT+10:00", "''yyyy-MM-dd")); // ^^ force string literal
設置單元格的日期格式。 這會將單元格的值保留為日期,這對計算很有用。
日期格式遵循SimpleDateFormat規范。
// Cell A1 contains a date var cell = SpreadsheetApp.getActiveSheet().getRange("A1"); cell.setNumberFormat('yyyy-mm-dd');
方案:
values[0][0] = Utilities.formatDate(new Date(),
"GMT+10:00", "yyyy-MM-dd").setNumberFormat('yyyy-mm-dd');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.