В Google Apps Script часто возникает необходимость получения текущей даты для различных задач, от автоматизации рутинных процессов до создания отчетов и интеграций с другими сервисами Google.
Зачем получать текущую дату в Google Apps Script?
Получение текущей даты необходимо для:
Автоматизации задач, связанных со временем.
Создания отчетов с временными метками.
Планирования и отслеживания событий.
Интеграции с другими сервисами, требующими временных данных.
Обзор методов получения текущей даты
В Google Apps Script существует несколько способов получения текущей даты, в основном с использованием встроенного объекта Date и утилит для форматирования дат.
Использование объекта `Date` для получения сегодняшней даты
Создание нового объекта `Date`
Самый простой способ получить текущую дату – создать новый объект Date без аргументов. Это создаст объект, представляющий текущее время на момент создания.
/**
* Получает текущую дату и время.
* @returns {Date} Текущая дата и время.
*/
function getCurrentDateTime(): Date {
const now: Date = new Date();
return now;
}
const today: Date = getCurrentDateTime();
console.log(today); // Выводит текущую дату и времяОсобенности часовых поясов и их учет
Важно учитывать, что объект Date создается с учетом часового пояса сервера Google Apps Script. Если вам нужно работать с датами в другом часовом поясе, необходимо использовать методы форматирования и указать желаемый часовой пояс.
Примеры кода получения текущей даты и времени
/**
* Получает текущую дату.
* @returns {Date} Текущая дата.
*/
function getCurrentDate(): Date {
const now: Date = new Date();
// Можно обнулить время, если нужна только дата
now.setHours(0, 0, 0, 0);
return now;
}
const todayOnly: Date = getCurrentDate();
console.log(todayOnly); // Выводит текущую дату без времениФорматирование даты в Google Apps Script
Использование `Utilities.formatDate()` для форматирования даты
Utilities.formatDate() – мощный инструмент для представления даты в нужном формате. Он позволяет указать формат даты, часовой пояс и объект Date для форматирования.
/**
* Форматирует дату в заданный формат.
* @param {Date} date Дата для форматирования.
* @param {string} timeZone Часовой пояс.
* @param {string} format Формат даты.
* @returns {string} Дата, отформатированная в соответствии с заданным форматом.
*/
function formatDate(date: Date, timeZone: string, format: string): string {
return Utilities.formatDate(date, timeZone, format);
}Примеры форматирования даты в различные форматы (год-месяц-день, день-месяц-год и т.д.)
const now: Date = new Date();
// Формат год-месяц-день
const yearMonthDay: string = formatDate(now, 'GMT+3', 'yyyy-MM-dd');
console.log(yearMonthDay); // Выводит дату в формате год-месяц-день
// Формат день-месяц-год
const dayMonthYear: string = formatDate(now, 'GMT+3', 'dd-MM-yyyy');
console.log(dayMonthYear); // Выводит дату в формате день-месяц-год
// Формат день.месяц.год час:минута:секунда
const fullDateTime: string = formatDate(now, 'GMT+3', 'dd.MM.yyyy HH:mm:ss');
console.log(fullDateTime);Указание часового пояса при форматировании
Часовой пояс указывается в виде строки, например, ‘GMT+3’ для московского времени или ‘America/Los_Angeles’ для тихоокеанского времени. Убедитесь, что используете правильный часовой пояс для вашей задачи.
Практические примеры использования текущей даты
Запись текущей даты в Google Sheets
/**
* Записывает текущую дату в Google Sheets.
*/
function writeCurrentDateToSheet(): 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, 'GMT+3', 'yyyy-MM-dd HH:mm:ss');
sheet.appendRow([formattedDate]);
}Создание файлов с именем, включающим текущую дату
/**
* Создает файл с именем, включающим текущую дату.
*/
function createFileWithDateInName(): void {
const now: Date = new Date();
const formattedDate: string = Utilities.formatDate(now, 'GMT+3', 'yyyyMMdd_HHmmss');
const fileName: string = `Отчет_${formattedDate}.txt`;
DriveApp.createFile(fileName, 'Текст отчета', MimeType.PLAIN_TEXT);
}Отправка электронной почты с текущей датой
/**
* Отправляет электронное письмо с текущей датой в теле письма.
*/
function sendEmailWithCurrentDate(): void {
const now: Date = new Date();
const formattedDate: string = Utilities.formatDate(now, 'GMT+3', 'dd.MM.yyyy');
const recipient: string = 'recipient@example.com';
const subject: string = `Сегодняшняя дата: ${formattedDate}`;
const body: string = `Привет!
Сегодня ${formattedDate}.
С уважением,
Ваш скрипт.`;
MailApp.sendEmail(recipient, subject, body);
}Заключение
Краткое резюме методов получения и форматирования даты
В Google Apps Script существует несколько способов работы с текущей датой: создание объекта Date, использование Utilities.formatDate() для форматирования и учет часовых поясов. Всегда учитывайте ваш часовой пояс и необходимый формат при работе с датами.
Рекомендации по выбору оптимального метода в зависимости от задачи
Для простых задач, требующих только текущую дату и время, достаточно создать объект Date.
Для задач, требующих определенного формата даты, используйте Utilities.formatDate().
При работе с датами в разных часовых поясах обязательно указывайте часовой пояс при форматировании.
Для записи в Google Sheets и создания имен файлов, не забывайте приводить дату к строковому представлению с необходимым форматированием.