Google Apps Script: Как получить год из даты?

Google Apps Script предоставляет мощные инструменты для работы с датами, что особенно полезно при автоматизации задач, связанных с обработкой данных, отчетностью и интеграцией с другими сервисами Google. Умение извлекать год из даты является базовой, но важной операцией, часто необходимой при анализе временных рядов, фильтрации данных по периодам или формировании отчетов.

Типы данных для представления дат в Google Apps Script

В Google Apps Script даты представляются объектом Date. Этот объект основан на JavaScript Date и содержит информацию о дате и времени.

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

Для работы с датами в Google Apps Script используются методы объекта Date, такие как getFullYear(), getMonth(), getDate(), getHours(), getMinutes(), getSeconds(), и getTime(). Кроме того, доступны методы для установки даты и времени.

Получение года из объекта Date

Использование метода getFullYear()

Самый простой и надежный способ получить год из объекта Date в Google Apps Script — использовать метод getFullYear(). Этот метод возвращает год в виде четырехзначного числа.

/**
 * Получает год из объекта Date.
 * @param {Date} date Объект Date.
 * @return {number} Год.
 */
function getYearFromDate(date: Date): number {
  return date.getFullYear();
}

// Пример использования
const today: Date = new Date();
const year: number = getYearFromDate(today);
Logger.log(year); // Выведет текущий год

Особенности учета часовых поясов

Важно учитывать, что объект Date в JavaScript по умолчанию использует местный часовой пояс. Если необходимо работать с датами в другом часовом поясе, следует использовать методы getUTCDate(), getUTCMonth() и т.д., или библиотеку Moment.js (доступную через сервисы импорта библиотек).

Преобразование дат в строку и обратно для извлечения года

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

Метод Utilities.formatDate() позволяет форматировать дату в строку с заданным шаблоном. Это полезно, если необходимо представить год в определенном формате.

/**
 * Форматирует дату в строку и извлекает год.
 * @param {Date} date Объект Date.
 * @param {string} timeZone Часовой пояс.
 * @param {string} format Формат даты.
 * @return {string} Год в виде строки.
 */
function getYearFormatted(date: Date, timeZone: string, format: string): string {
  const formattedDate: string = Utilities.formatDate(date, timeZone, format);
  return formattedDate;
}

// Пример использования
const now: Date = new Date();
const yearString: string = getYearFormatted(now, "GMT+3", "yyyy"); // Москва
Logger.log(yearString);

Анализ строкового представления даты (если метод getFullYear() недоступен)

В редких случаях, когда прямой доступ к getFullYear() невозможен (например, при работе со старыми API, возвращающими дату в строковом формате), можно использовать регулярные выражения или методы работы со строками для извлечения года.

/**
 * Извлекает год из строкового представления даты.
 * @param {string} dateString Строка с датой.
 * @return {number | null} Год или null, если не удалось извлечь.
 */
function getYearFromString(dateString: string): number | null {
  const yearMatch: RegExpMatchArray | null = dateString.match(/\d{4}/);
  if (yearMatch) {
    return parseInt(yearMatch[0]);
  }
  return null;
}

// Пример использования
const dateStr: string = "2023-10-26";
const yearFromStr: number | null = getYearFromString(dateStr);
Logger.log(yearFromStr); // Выведет 2023
Реклама

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

Получение года из даты в Google Sheets

В Google Sheets можно использовать Google Apps Script для автоматизации задач, связанных с датами. Например, можно создать функцию, которая будет извлекать год из даты в ячейке и записывать его в другую ячейку.

/**
 * Получает год из даты в указанной ячейке Google Sheets.
 */
function getYearFromSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const dateValue: Date = sheet.getRange("A1").getValue(); // Получаем значение из ячейки A1
  if (dateValue instanceof Date) {
    const year = dateValue.getFullYear();
    sheet.getRange("B1").setValue(year); // Записываем год в ячейку B1
  } else {
    Logger.log("Ячейка A1 не содержит дату.");
  }
}

Получение года при работе с Google Calendar API

При работе с Google Calendar API можно извлекать год из дат событий для фильтрации или анализа событий по годам.

/**
 * Получает год начала первого события в календаре.
 */
function getYearFromCalendarEvent() {
  const calendarId: string = 'primary';
  const now: Date = new Date();
  const events = Calendar.Events.list(calendarId, {
    timeMin: now.toISOString(),
    maxResults: 1,
    singleEvents: true,
    orderBy: 'startTime'
  }).items;

  if (events.length > 0) {
    const event = events[0];
    const startDate = new Date(event.start.dateTime || event.start.date);
    const year = startDate.getFullYear();
    Logger.log("Год начала первого события: " + year);
  } else {
    Logger.log("Нет предстоящих событий.");
  }
}

Пример: Фильтрация данных по году

Предположим, у вас есть массив объектов с данными о продажах, и каждый объект содержит поле date. Вы можете отфильтровать этот массив, чтобы получить данные только за определенный год.

/**
 * Фильтрует данные о продажах по году.
 * @param {Array} salesData Массив объектов с данными о продажах (поле 'date' должно быть типа Date).
 * @param {number} targetYear Год для фильтрации.
 * @return {Array} Отфильтрованный массив.
 */
function filterSalesDataByYear(salesData: Array, targetYear: number): Array {
  return salesData.filter(item => {
    if (item.date instanceof Date) {
      return item.date.getFullYear() === targetYear;
    } else {
      return false; // Или обработать случай, когда date не является Date
    }
  });
}

// Пример использования (предположим, что salesData - массив объектов)
// const salesIn2023 = filterSalesDataByYear(salesData, 2023);
// Logger.log(salesIn2023);



Заключение и полезные советы

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

В этой статье мы рассмотрели несколько способов получения года из даты в Google Apps Script: использование метода getFullYear(), форматирование даты с помощью Utilities.formatDate() и анализ строкового представления даты. Каждый метод имеет свои преимущества и недостатки, и выбор метода зависит от конкретной задачи.

Рекомендации по работе с датами в Google Apps Script

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

Учитывайте часовые пояса при работе с датами, особенно если скрипт работает с данными из разных регионов.

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

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


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