@OpenReligion

Как понять, что введенное значение является датой?

В таблице Google Sheet есть ячейка, куда пользователи заносят дату рождения клиентов.
В 95% случаев записывают или 25 февраля, или 25.02 или 25.02.1980.
Через Google Script я потом переношу введенное значение в другую таблицу и по ходу устанавливаю единый формат
var birthday1 = ss1.getRange("D8").getValue();
var birthday = Utilities.formatDate(birthday1, "GMT+3", "dd-MM-yyyy")

Проблемы начинаются, если пользователь оставляет ячейку пустой или вносит туда не дату, например, фразу: "Не знаю".
Тогда при выполнении скрипта Utilities.formatDate выдает ошибку.
Есть ли возможность с помощью короткого кода понять, является ли введенное значение датой, и только тогда применять к нему Utilities.formatDate ?
  • Вопрос задан
  • 476 просмотров
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Вопрос больше к JavaScript, а не к Google Apps Script.

Проверяйте наличие чего-либо в переменной, а потом проверьте, имеет ли эта переменная метод getTime.

function isDate(value){
  return value && value.getTime;
}


Академический способ, который раньше не работал в скриптах, потому что не хватало чего-то.

function isDate(date){
  return date instanceof Date && !isNaN(date.valueOf());
}


Решение
Пример с неопределенным результатом без вызова ошибки
var birthday1 = ss1.getRange("D8").getValue();
var birthday = isDate(birthday1) ?
  Utilities.formatDate(birthday1, "GMT+3", "dd-MM-yyyy") : 
  undefined;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы