Основные манипуляции с датами в скрипте 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);  
}

Мне также интересно, если кто-то может объяснить контуры дел с датами или указать хорошую ссылку.

8 голосов | спросил anderstood 12 Jpm1000000pmTue, 12 Jan 2016 23:59:24 +030016 2016, 23:59:24

2 ответа


10

Получение и установка значений даты и времени

Всякий раз, когда ваш скрипт вызывает .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 в журнале.

ответил 13 Jam1000000amWed, 13 Jan 2016 06:39:42 +030016 2016, 06:39:42
4

Короткий ответ

Ниже представлены две пользовательские функции в качестве примеров того, как 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 для февраля и т. д.

Ссылки

ответил Rubén 13 Jam1000000amWed, 13 Jan 2016 00:46:39 +030016 2016, 00:46:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132