Как получить сегодняшнюю дату в Google Apps Script?

Google Apps Script предоставляет мощные инструменты для автоматизации задач в Google Workspace. Работа с датами – одна из основных потребностей при создании скриптов для, например, анализа данных, автоматической рассылки отчетов или планирования событий.

Зачем нужно получать текущую дату в Google Apps Script?

Получение текущей даты необходимо для:

Автоматической генерации отчетов: Добавление текущей даты в название или тело отчета.

Планирования задач: Создание событий в Google Calendar на текущую или будущую дату.

Учета времени: Фиксация времени выполнения скрипта или записи данных.

Персонализации рассылок: Включение текущей даты в текст электронного письма.

Обзор основных методов работы с датами

В Google Apps Script для работы с датами используется встроенный объект Date и утилита Utilities.formatDate(). Мы рассмотрим оба этих инструмента и покажем, как их применять для решения различных задач.

Метод `new Date()`: Основной способ получения текущей даты

Использование `new Date()` для получения текущей даты и времени

Основной способ получить текущую дату и время в Google Apps Script – это использовать конструктор new Date(). Этот конструктор возвращает объект Date, представляющий текущий момент времени.

Примеры кода: простые сценарии получения даты

/**
 * Получает текущую дату и время.
 * @return {Date} Текущая дата и время.
 */
function getCurrentDateTime(): Date {
  const now: Date = new Date();
  Logger.log(now); // Выводит текущую дату и время в лог
  return now;
}

/**
 * Пример использования функции getCurrentDateTime.
 */
function exampleUsage(): void {
  const currentDateTime: Date = getCurrentDateTime();
  Logger.log('Текущая дата и время: ' + currentDateTime);
}

Этот код создает новый объект Date, представляющий текущую дату и время, и выводит его в лог.

Форматирование даты в Google Apps Script

Использование `Utilities.formatDate()` для форматирования даты

Объект Date, полученный с помощью new Date(), может быть отформатирован в удобный для чтения вид с помощью утилиты Utilities.formatDate(). Эта утилита позволяет задать формат даты и часовой пояс.

Настройка часового пояса при форматировании даты

При форматировании даты важно учитывать часовой пояс, чтобы дата отображалась корректно для пользователя. Часовой пояс задается вторым аргументом функции Utilities.formatDate(). Например, Europe/Moscow.

Примеры кода: Форматирование даты в различные форматы (dd.MM.yyyy, yyyy-MM-dd и т.д.)

/**
 * Форматирует дату в заданный формат.
 * @param {Date} date Дата для форматирования.
 * @param {string} timeZone Часовой пояс.
 * @param {string} format Формат даты (например, 'dd.MM.yyyy').
 * @return {string} Отформатированная дата.
 */
function formatDate(date: Date, timeZone: string, format: string): string {
  const formattedDate: string = Utilities.formatDate(date, timeZone, format);
  return formattedDate;
}

/**
 * Пример использования функции formatDate.
 */
function exampleFormatDate(): void {
  const now: Date = new Date();
  const timeZone: string = 'Europe/Moscow';
  const format1: string = 'dd.MM.yyyy';
  const format2: string = 'yyyy-MM-dd';

  const formattedDate1: string = formatDate(now, timeZone, format1);
  const formattedDate2: string = formatDate(now, timeZone, format2);

  Logger.log('Дата в формате dd.MM.yyyy: ' + formattedDate1);
  Logger.log('Дата в формате yyyy-MM-dd: ' + formattedDate2);
}
Реклама

Этот код показывает, как форматировать дату в различные форматы, используя функцию Utilities.formatDate().

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

Как отделить дату от времени в объекте Date?

Иногда требуется получить только дату без времени. Для этого можно создать новый объект Date, используя только год, месяц и день из исходного объекта.

Создание новой даты только с годом, месяцем и днем

/**
 * Получает дату без времени.
 * @param {Date} date Дата и время.
 * @return {Date} Дата без времени.
 */
function getDateOnly(date: Date): Date {
  const year: number = date.getFullYear();
  const month: number = date.getMonth();
  const day: number = date.getDate();
  return new Date(year, month, day);
}

/**
 * Пример использования функции getDateOnly.
 */
function exampleGetDateOnly(): void {
  const now: Date = new Date();
  const dateOnly: Date = getDateOnly(now);
  Logger.log('Дата без времени: ' + dateOnly);
}

Этот код создает новый объект Date, который содержит только год, месяц и день, обнуляя часы, минуты, секунды и миллисекунды.

Альтернативные подходы к получению чистой даты

Альтернативным подходом является преобразование даты в строку в нужном формате (например, ‘yyyy-MM-dd’) и последующее создание нового объекта Date из этой строки. Этот метод позволяет избежать проблем с часовыми поясами и переходом на летнее время.

Примеры практического применения

Запись текущей даты в Google Sheets

/**
 * Записывает текущую дату в ячейку Google Sheets.
 */
function writeDateToSheet(): void {
  const ss: GoogleAppsScript.Spreadsheet.Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet: GoogleAppsScript.Spreadsheet.Sheet = ss.getActiveSheet();
  const now: Date = new Date();
  const formattedDate: string = Utilities.formatDate(now, Session.getTimeZone(), 'dd.MM.yyyy');

  sheet.appendRow([formattedDate]);
}

Этот код записывает текущую дату в формате dd.MM.yyyy в новую строку текущего листа Google Sheets.

Создание событий в Google Calendar с текущей датой

/**
 * Создает событие в Google Calendar на текущую дату.
 */
function createCalendarEvent(): void {
  const calendarId: string = 'your_calendar_id@group.calendar.google.com'; // Замените на ID вашего календаря
  const calendar: GoogleAppsScript.Calendar.Calendar = CalendarApp.getCalendarById(calendarId);
  const now: Date = new Date();
  const title: string = 'Событие на ' + Utilities.formatDate(now, Session.getTimeZone(), 'dd.MM.yyyy');
  const startTime: Date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0); // 10:00
  const endTime: Date = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 11, 0, 0); // 11:00

  calendar.createEvent(title, startTime, endTime);
}

Этот код создает событие в Google Calendar на текущую дату с заголовком, включающим текущую дату.

Отправка электронных писем с указанием текущей даты

/**
 * Отправляет электронное письмо с указанием текущей даты.
 */
function sendEmailWithDate(): void {
  const recipient: string = 'recipient@example.com'; // Замените на адрес получателя
  const subject: string = 'Текущая дата';
  const now: Date = new Date();
  const formattedDate: string = Utilities.formatDate(now, Session.getTimeZone(), 'dd.MM.yyyy');
  const body: string = 'Сегодня: ' + formattedDate;

  MailApp.sendEmail(recipient, subject, body);
}

Этот код отправляет электронное письмо с темой "Текущая дата", в теле которого указана текущая дата в формате dd.MM.yyyy.


Добавить комментарий