Я хотел бы определить пользовательскую функцию в Google Sheet. Эта функция должна сделать что-то очень простое, но мне не удалось найти, как это сделать. Я очень смущен всеми ответами, которые я прочитал, потому что я не могу найти четкую ссылку о работе с датами в скриптах Google.
Из того, что я понимаю, основные манипуляции с датой могут быть выполнены с помощью:
new Date()
Насколько я понимаю, он определяет объект, который имеет некоторые свойства. Я не знаю, как использовать дату ячейки и преобразовать ее в такой объект.Utilities.formatDate()
: это изменить формат даты, представленной в виде строки .- библиотека
Moment
( http://momentjs.com/ )
В конце концов, как я могу ввести две даты (например 31/01/2016
) и, скажем, найти максимум между двумя и извлечь месяц первой?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
Мне также интересно, если кто-то может объяснить схемы работы с датами или указать хорошую ссылку.
google-sheets
google-apps-script
anderstood
источник
источник
Ответы:
Получение и установка значений даты и времени
Всякий раз, когда ваш скрипт вызывает
.getValue()
ячейку, отформатированную как дата, дата или время, он получает объект JavaScript Date . Затем к этому объекту можно применить различные методы, перечисленные на этой странице MDN, в том числеgetMonth()
для месяца. Пример:И наоборот, вы можете назначить объект Date ячейке с помощью
setValue
, и он будет автоматически отформатирован как таковой.Часовые пояса
Временная метка в Google Sheets находится в местном часовом поясе, который задается в меню «Файл»> «Настройки электронной таблицы». Сценарий также работает в часовом поясе, который может отличаться и находится в разделе «Файл»> «Свойства проекта» в редакторе сценариев. Если эти часовые пояса не совпадают, у вас будут проблемы с временными метками.
Чтобы проверить, согласуются ли часовые пояса, вы можете сравнить оба вручную или сделать что-то вроде этого:
Это вводит формулу
=date(2015,1,1)
в ячейку A1. Результат будет 2015-01-01 00:00:00 в часовом поясе таблицы. Затем сценарий получает дату и извлекает часы по местному времени сценария. Если часовые пояса совпадают, вы должны увидеть 0.0 в журнале.источник
Короткий ответ
Ниже представлены две пользовательские функции в качестве примеров того, как Google Sheets и Google Apps Script могут работать с датами.
Пример 1: Получить самую новую дату
Пример 2: Получить месяц с самой новой датой
Краткое объяснение
В первом примере метод JavaScript Math.max делает свою работу.
Если для получения даты в качестве результата, объект даты создается с использованием new Date () .
Во втором примере объекту date назначается переменная, затем для получения индекса месяца используется метод JavaScript getMonth () . Имейте в виду, что JavaScript используется
0
для начального элемента,0
как и для января,1
для февраля и так далее.Ссылки
источник
date1
,date2
прошел как числа (обычно: 54243)? II) Теперь я попытался извлечь месяцdate2
использования,date2.getMonth()
но когда ячейка01/12/2015
это возвращает 10 и 11 для02/12/2015
. Я думаю, это из-за часового пояса. Функция листаmonth()
намного проще.myfunction2
возвращает 10, а максимальное - 12/12/2015, возвращается 11. Хотя я в порядке с 11, я не понимаю почему возвращается 10 за 01/12/2015. Как я уже сказал, я считаю, что это связано с GMT, но я не уверен. Я что-то пропустил?