Google Apps скрипт формат даты выпуска (утилиты.функция formatdate)

Я довольно новичок в Google Apps Script, поэтому, пожалуйста, потерпите со мной.

Я собираю ежедневные процентные ставки из банка в Google Таблицах, и я использую следующий код для добавления новых строк для ставок, содержащихся в 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]);

};

моя проблема в том , что, хотя я указал формат даты "гггг-ММ-ДД", даты в столбце А в моих новых строках создаются в этом формате"М/ДД/гггг".

Я пробовал предварительное форматирование всего столбца A с помощью" гггг-ММ-ДД "с помощью выпадающего меню формата в Google таблицах, но если я запускаю код выше, моя новая строка все еще находится в"М/ДД/гггг".

как будто мой код игнорирует утилиты.полностью функция formatdate. FYI я получил вышеуказанный код от здесь.

2 ответов


на Utilities.formatDate() утилита форматирует строку javascript. Однако при записи в электронную таблицу новая строка данных интерпретируется Google Sheets для определения типов данных и соответствующего форматирования, как если бы вы ввели ее через пользовательский интерфейс.

поскольку у вас есть узнаваемая строка даты, Google Sheets решает, что это дата, сохраняет ее как таковую и применяет формат даты по умолчанию.

у вас есть два варианта для создания даты в таблице отвечайте вашим потребностям форматирования.

  1. заставить его интерпретироваться как строка, даже если она выглядит как дата.

    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');