Основные манипуляции с датами в скрипте Google
Я хотел бы определить пользовательскую функцию в Листе Google. Эта функция должна делать что-то очень простое, но мне не удалось найти, как это сделать. Я очень смущен всеми ответами, которые я читал, потому что я не могу найти четкую ссылку о датах в сценариях 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);
}
Мне также интересно, если кто-то может объяснить контуры дел с датами или указать хорошую ссылку.
2 ответа
Получение и установка значений даты и времени
Всякий раз, когда ваш скрипт вызывает .getValue()
в ячейке, отформатированной как дата, дата-время или продолжительность, она получает объект JavaScript Date . Затем вы можете применить к этому объекту различные методы, перечисленные на этой странице MDN, включая getMonth()
за месяц. Пример:
var sheet = SpreadsheetApp.getActiveSheet();
var value = sheet.getRange('A1').getValue(); // is a Date object
Logger.log([value.getMonth(), value.getHours(), value.getUTCHours()]);
// examples of available methods
И наоборот, вы можете назначить объект Date ячейке с помощью setValue
, и она будет автоматически отформатирована как таковая.
sheet.getRange('B2').setValue(new Date()); // current timestamp
Часовые пояса
Временная метка в Google Таблицах находится в локальном часовом поясе, который устанавливается через File> Настройки электронной таблицы. Сценарий также работает в часовом поясе, который может быть другим и находится в файле File> Свойства проекта в редакторе скриптов. Если эти часовые пояса не совпадают, у вас возникнет проблема с отметками времени.
Чтобы проверить, согласуются ли часовые пояса, вы можете либо сравнить их вручную, либо сделать что-то вроде этого:
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A1').setFormula('=date(2015,1,1)');
Logger.log(sheet.getRange('A1').getValue().getHours());
Вводит формулу =date(2015,1,1)
в ячейку A1. Результат будет 2015-01-01 00:00:00 в часовом поясе электронной таблицы. Затем скрипт получает дату и извлекает часы в локальное время скрипта. Если часовой пояс согласуется, вы должны увидеть 0.0 в журнале.
Короткий ответ
Ниже представлены две пользовательские функции в качестве примеров того, как Google Таблицы и скрипт Google Apps могут работать с датами.
Пример 1: Получить самую новую дату
function myFunction(date1,date2) {
return new Date(Math.max(date1,date2))
}
Пример 2: Получить месяц с самой новой датой
function myFunction2(date1,date2) {
var date = new Date(Math.max(date1,date2));
return date.getMonth();
}
Краткое описание
В первом примере Math. max Метод JavaScript выполняет эту работу.
Если для получения даты в качестве результата создается объект даты с помощью нового Дата () .
Во втором примере объект даты присваивается переменной, а getMonth () Метод JavaScript используется для получения индекса месяца. Имейте в виду, что JavaScript использует 0
для исходного элемента, поэтому 0
- январь, 1
для февраля и т. д.