Google Apps Script: Как преобразовать данные в строку?

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

Зачем преобразовывать данные в строку?

Преобразование данных в строку необходимо для:

Вывода информации: Для отображения данных пользователю (например, через Logger.log() или в пользовательском интерфейсе).

Сохранения данных: Для записи данных в Google Sheets, текстовые файлы или базы данных, где они часто представляются в строковом формате.

Передачи данных между системами: При взаимодействии с внешними API, которые ожидают данные в строковом формате (например, JSON).

Формирования запросов: Для создания динамических запросов к базам данных или другим сервисам, где параметры должны быть представлены в виде строк.

Конкатенации: Для объединения различных фрагментов данных в единое целое. Например, для создания URL-адресов или сообщений.

Основные типы данных в Google Apps Script и их строковое представление

Google Apps Script поддерживает следующие основные типы данных, которые могут быть преобразованы в строку:

Number (Число): Представляет числовые значения (целые и с плавающей точкой).

String (Строка): Представляет текстовые данные.

Boolean (Булево значение): Представляет логические значения (true или false).

Date (Дата): Представляет дату и время.

Array (Массив): Представляет упорядоченный набор элементов.

Object (Объект): Представляет набор свойств (ключ-значение).

Null (Нулевое значение): Представляет отсутствие значения.

Undefined (Неопределенное значение): Представляет переменную, которой не присвоено значение.

Каждый из этих типов имеет свои особенности при преобразовании в строку, которые мы рассмотрим далее.

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

Использование метода `String()` для преобразования чисел

Самый простой способ преобразовать число в строку – использовать глобальную функцию String():

/**
 * Преобразует число в строку с использованием String().
 * @param {number} number Число для преобразования.
 * @return {string} Строковое представление числа.
 */
function numberToStringUsingString(number) {
  const str = String(number);
  Logger.log(typeof str); // string
  return str;
}

Logger.log(numberToStringUsingString(123)); // Выводит: 123
Logger.log(numberToStringUsingString(3.14)); // Выводит: 3.14

Использование метода `toString()` для преобразования чисел

Альтернативный способ – использовать метод toString(), доступный для всех числовых объектов:

/**
 * Преобразует число в строку с использованием toString().
 * @param {number} number Число для преобразования.
 * @return {string} Строковое представление числа.
 */
function numberToStringUsingToString(number) {
  const str = number.toString();
  Logger.log(typeof str); // string
  return str;
}

Logger.log(numberToStringUsingToString(42)); // Выводит: 42
Logger.log(numberToStringUsingToString(2.71)); // Выводит: 2.71

Форматирование чисел при преобразовании в строку (например, добавление знаков после запятой)

Для более гибкого форматирования чисел при преобразовании в строку можно использовать метод toFixed():

/**
 * Преобразует число в строку с указанным количеством знаков после запятой.
 * @param {number} number Число для преобразования.
 * @param {number} fractionDigits Количество знаков после запятой.
 * @return {string} Строковое представление числа с фиксированным количеством знаков после запятой.
 */
function formatNumberToString(number, fractionDigits) {
  const str = number.toFixed(fractionDigits);
  return str;
}

Logger.log(formatNumberToString(3.14159, 2)); // Выводит: 3.14
Logger.log(formatNumberToString(10, 3)); // Выводит: 10.000

Преобразование дат в строку

Использование метода `String()` для преобразования дат

Как и в случае с числами, можно использовать String() для преобразования объекта Date в строку. Однако, результат может быть не всегда желаемым, так как он зависит от настроек локали и браузера:

/**
 * Преобразует дату в строку с использованием String().
 * @param {Date} date Дата для преобразования.
 * @return {string} Строковое представление даты.
 */
function dateToStringUsingString(date) {
  const str = String(date);
  return str;
}

const now = new Date();
Logger.log(dateToStringUsingString(now)); // Выводит: Wed Nov 08 2023 14:30:00 GMT+0000 (Coordinated Universal Time)
Реклама

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

Для более контролируемого форматирования даты в Google Apps Script рекомендуется использовать метод Utilities.formatDate():

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

const now = new Date();
Logger.log(formatDateToString(now, "GMT+3", "yyyy-MM-dd HH:mm:ss")); // Выводит: 2023-11-08 17:30:00 (пример)

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

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

Примеры различных форматов даты и времени

Вот несколько примеров различных форматов даты и времени, которые можно использовать с Utilities.formatDate():

yyyy-MM-dd: Год-Месяц-День

MM/dd/yyyy: Месяц/День/Год

dd.MM.yyyy: День.Месяц.Год

HH:mm:ss: Часы:Минуты:Секунды

yyyy-MM-dd'T'HH:mm:ss'Z': Формат ISO 8601

Преобразование массивов в строку

Использование метода `join()` для объединения элементов массива в строку

Метод join() позволяет объединить все элементы массива в одну строку. По умолчанию элементы разделяются запятой:

/**
 * Преобразует массив в строку с использованием join().
 * @param {Array} array Массив для преобразования.
 * @param {string} separator Разделитель элементов массива.
 * @return {string} Строковое представление массива.
 */
function arrayToStringUsingJoin(array, separator) {
  const str = array.join(separator);
  return str;
}

const myArray = ["apple", "banana", "cherry"];
Logger.log(arrayToStringUsingJoin(myArray, ", ")); // Выводит: apple, banana, cherry

Разделители при объединении элементов массива (запятая, точка с запятой, и т.д.)

Можно указать любой разделитель в качестве аргумента метода join():

const myArray = [1, 2, 3, 4, 5];
Logger.log(arrayToStringUsingJoin(myArray, ";")); // Выводит: 1;2;3;4;5
Logger.log(arrayToStringUsingJoin(myArray, " | ")); // Выводит: 1 | 2 | 3 | 4 | 5

Преобразование многомерных массивов в строку

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

Преобразование объектов в строку

Использование `JSON.stringify()` для сериализации объектов в JSON-строку

Самый распространенный способ преобразовать объект в строку – использовать метод JSON.stringify():

/**
 * Преобразует объект в JSON-строку.
 * @param {object} object Объект для преобразования.
 * @return {string} JSON-строка.
 */
function objectToJsonString(object) {
  const str = JSON.stringify(object);
  return str;
}

const myObject = { name: "John", age: 30, city: "New York" };
Logger.log(objectToJsonString(myObject)); // Выводит: {"name":"John","age":30,"city":"New York"}

Обработка циклических ссылок при сериализации объектов

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

Преобразование свойств объекта в строку вручную

В качестве альтернативы JSON.stringify() можно вручную преобразовать свойства объекта в строку, создавая собственное представление объекта:

/**
 * Преобразует объект в строку, объединяя свойства.
 * @param {object} object Объект для преобразования.
 * @return {string} Строковое представление объекта.
 */
function objectToStringManually(object) {
  let str = "";
  for (const key in object) {
    if (object.hasOwnProperty(key)) {
      str += key + ": " + object[key] + ", ";
    }
  }
  //Удаляем последнюю запятую и пробел
  str = str.slice(0, -2);
  return str;
}

const myObject = { name: "Jane", age: 25 };
Logger.log(objectToStringManually(myObject)); // Выводит: name: Jane, age: 25

Этот способ дает больший контроль над форматом результирующей строки, но требует больше ручной работы.


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