簡體   English   中英

Google Apps腳本日期格式問題(Utilities.formatDate)

[英]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表格決定它是一個日期,將其存儲,並應用默認日期格式。

您有兩種方法可以使電子表格中的日期符合您的格式需求。

  1. 強制它被解釋為String,即使它看起來像日期。

     cell.setValue(Utilities.formatDate(new Date(), "GMT+10:00", "''yyyy-MM-dd")); // ^^ force string literal 
  2. 設置單元格的日期格式。 這會將單元格的保留為日期,這對計算很有用。

    日期格式遵循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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM