Google Apps脚本日期格式问题(Utilities.formatDate)

sac*_*tyr 8 format date google-sheets google-apps-script

我对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]);

};
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 尽管我已将日期格式指定为"yyyy-MM-dd",但我的新行中A列中的日期是以"M/dd/yyyy"格式创建的.

我尝试使用Google表格中的下拉格式菜单将整个列A预格式化为"yyyy-MM-dd",但如果我运行上面的代码,我的新行仍然是"M/dd/yyyy".

好像我的代码完全忽略了Utilities.formatDate.仅供我从这里获得上述代码.

Mog*_*dad 10

Utilities.formatDate()实用程序格式化一个javascript字符串.但是,当写入电子表格时,Google表格会解释新的数据行,以确定数据类型和适当的格式,就像您通过用户界面输入一样.

由于您有一个可识别的日期字符串,因此Google表格决定它是一个日期,将其存储,并应用默认日期格式.

您有两种方法可以使电子表格中的日期符合您的格式需求.

  1. 强制它被解释为String,即使它看起来像日期.

    cell.setValue(Utilities.formatDate(new Date(), "GMT+10:00", "''yyyy-MM-dd"));
    //                                                           ^^ force string literal
    
    Run Code Online (Sandbox Code Playgroud)
  2. 设置单元格的日期格式.这会将单元格的保留为日期,这对计算很有用.

    日期格式遵循SimpleDateFormat规范.

    // Cell A1 contains a date
    var cell = SpreadsheetApp.getActiveSheet().getRange("A1");
    cell.setNumberFormat('yyyy-mm-dd');
    
    Run Code Online (Sandbox Code Playgroud)