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 решает, что это дата, сохраняет ее как таковую и применяет формат даты по умолчанию.
у вас есть два варианта для создания даты в таблице отвечайте вашим потребностям форматирования.
-
заставить его интерпретироваться как строка, даже если она выглядит как дата.
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');