Как отформатировать строку в Google Apps Script: полное руководство

Что такое форматирование строк и зачем оно нужно?

Форматирование строк – это процесс преобразования данных в строку, приведения их к определенному виду, удобному для чтения, анализа или дальнейшей обработки. Это ключевой навык в Google Apps Script, позволяющий динамически создавать текстовые сообщения, генерировать отчеты, взаимодействовать с Google Sheets и другими сервисами.

Основные случаи использования форматирования строк в Google Apps Script

Форматирование строк широко применяется для:

  • Создания динамических сообщений электронной почты (например, персонализированные рассылки).
  • Генерации HTML-кода для веб-интерфейсов и отчетов.
  • Формирования данных для записи в Google Sheets (например, создание отчетов с датой и временем).
  • Логирования и отладки скриптов.
  • Работы с API, где требуется передавать данные в определенном формате.

Необходимые инструменты и предварительные настройки

Для работы с форматированием строк в Google Apps Script вам понадобится:

  • Доступ к Google Apps Script (через Google Sheets, Docs, Forms и т.д.).
  • Базовые знания JavaScript, так как Google Apps Script основан на нем.
  • Редактор кода Google Apps Script (доступен через браузер).

Базовые методы форматирования строк

Конкатенация строк: соединение текста с переменными

Конкатенация – самый простой способ объединить строки. Используется оператор +.

/**
 *  Пример конкатенации строк
 *  @param {string} campaignName - Название рекламной кампании
 *  @param {number} impressions - Количество показов
 *  @return {string} - Отформатированная строка с информацией о кампании
 */
function concatenateStrings(campaignName: string, impressions: number): string {
  const message: string = "Кампания " + campaignName + " получила " + impressions + " показов.";
  return message;
}

console.log(concatenateStrings("Весенняя распродажа", 1500)); // Вывод: Кампания Весенняя распродажа получила 1500 показов.

Использование шаблонов строк (Template Literals) для упрощения конкатенации

Шаблонные строки (template literals) – более современный и удобный способ конкатенации. Они позволяют вставлять переменные непосредственно в строку, используя ${}.

/**
 *  Пример использования шаблонных строк
 *  @param {string} keyword - Ключевое слово
 *  @param {number} clicks - Количество кликов
 *  @return {string} - Отформатированная строка с информацией о ключевом слове
 */
function templateLiterals(keyword: string, clicks: number): string {
  const message: string = `Ключевое слово "${keyword}" получило ${clicks} кликов.`;
  return message;
}

console.log(templateLiterals("купить диван", 235)); // Вывод: Ключевое слово "купить диван" получило 235 кликов.

Преобразование типов данных в строку (toString())

Метод toString() позволяет преобразовать любой тип данных в строку.

/**
 *  Пример использования toString()
 *  @param {number} adBudget - Бюджет рекламной кампании
 *  @return {string} - Строковое представление бюджета
 */
function convertToString(adBudget: number): string {
  const budgetString: string = adBudget.toString();
  return budgetString;
}

console.log(typeof convertToString(1000)); // Вывод: string

Продвинутые методы форматирования строк

Метод Utilities.formatString(): подробный обзор и примеры

Utilities.formatString() – мощный метод для форматирования строк с использованием плейсхолдеров. Поддерживает различные типы данных и позволяет гибко управлять форматированием.

/**
 *  Пример использования Utilities.formatString()
 *  @param {string} productName - Название продукта
 *  @param {number} price - Цена продукта
 *  @param {number} discount - Скидка в процентах
 *  @return {string} - Отформатированная строка с информацией о продукте
 */
function formatStringExample(productName: string, price: number, discount: number): string {
  const message: string = Utilities.formatString("Продукт: %s, Цена: %.2f, Скидка: %d%%", productName, price, discount);
  return message;
}

console.log(formatStringExample("Книга", 25.50, 10)); // Вывод: Продукт: Книга, Цена: 25.50, Скидка: 10%
  • %s – для строк
  • %d – для целых чисел
  • %f – для чисел с плавающей точкой

Использование регулярных выражений для сложного форматирования

Регулярные выражения позволяют выполнять сложные операции поиска и замены в строках. Это полезно, когда требуется более тонкий контроль над форматированием.

Реклама
/**
 *  Пример использования регулярных выражений для удаления лишних пробелов
 *  @param {string} text - Исходный текст
 *  @return {string} - Текст без лишних пробелов
 */
function removeExtraSpaces(text: string): string {
  const cleanedText: string = text.replace(/\s+/g, ' ');
  return cleanedText;
}

console.log(removeExtraSpaces("  Это  текст   с  лишними   пробелами.  ")); // Вывод: Это текст с лишними пробелами.

Форматирование чисел: DecimalFormat и NumberFormat

Для форматирования чисел, особенно валюты и процентов, используются классы DecimalFormat и NumberFormat.

/**
 *  Пример форматирования числа как валюты
 *  @param {number} amount - Сумма
 *  @param {string} currencyCode - Код валюты (например, USD, EUR)
 *  @return {string} - Отформатированная сумма в формате валюты
 */
function formatCurrency(amount: number, currencyCode: string): string {
  const formatter: GoogleAppsScript.Base.NumberFormat = NumberFormat.getCurrencyInstance(currencyCode);
  const formattedAmount: string = formatter.format(amount);
  return formattedAmount;
}

console.log(formatCurrency(1234.56, "USD")); // Вывод: $1,234.56 (зависит от локали)

Практические примеры форматирования строк в Google Apps Script

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

/**
 *  Форматирование даты и времени
 *  @param {Date} date - Объект Date
 *  @param {string} format - Формат даты и времени (например, yyyy-MM-dd HH:mm:ss)
 *  @return {string} - Отформатированная дата и время
 */
function formatDate(date: Date, format: string): string {
  const formattedDate: string = Utilities.formatDate(date, Session.getTimeZone(), format);
  return formattedDate;
}

const now: Date = new Date();
console.log(formatDate(now, "yyyy-MM-dd HH:mm:ss")); // Вывод: 2024-01-01 12:34:56 (пример)

Создание персонализированных сообщений и уведомлений

/**
 *  Создание персонализированного сообщения для клиента
 *  @param {string} clientName - Имя клиента
 *  @param {string} orderId - Номер заказа
 *  @return {string} - Персонализированное сообщение
 */
function createPersonalizedMessage(clientName: string, orderId: string): string {
  const message: string = `Уважаемый(ая) ${clientName}, ваш заказ #${orderId} успешно оформлен.`;
  return message;
}

console.log(createPersonalizedMessage("Иван Иванов", "12345")); // Вывод: Уважаемый(ая) Иван Иванов, ваш заказ #12345 успешно оформлен.

Генерация HTML-кода с использованием форматирования строк

/**
 *  Генерация HTML-кода для таблицы
 *  @param {Array<Array<string>>} data - Двумерный массив с данными для таблицы
 *  @return {string} - HTML-код таблицы
 */
function generateHTMLTable(data: Array<Array<string>>): string {
  let html: string = "<table>";
  for (const row of data) {
    html += "<tr>";
    for (const cell of row) {
      html += `<td>${cell}</td>`;
    }
    html += "</tr>";
  }
  html += "</table>";
  return html;
}

const tableData: Array<Array<string>> = [["Имя", "Возраст"], ["Петр", "30"], ["Анна", "25"]];
console.log(generateHTMLTable(tableData));

Форматирование данных для записи в Google Sheets

/**
 *  Форматирование данных для записи в Google Sheets
 *  @param {string} campaignName - Название кампании
 *  @param {number} impressions - Количество показов
 *  @param {Date} date - Дата
 *  @return {Array<string>} - Массив данных для записи в Google Sheets
 */
function formatDataForSheet(campaignName: string, impressions: number, date: Date): Array<string> {
  const formattedDate: string = Utilities.formatDate(date, Session.getTimeZone(), "yyyy-MM-dd");
  const data: Array<string> = [campaignName, impressions.toString(), formattedDate];
  return data;
}

const campaignName: string = "Летняя акция";
const impressions: number = 5000;
const date: Date = new Date();
console.log(formatDataForSheet(campaignName, impressions, date)); // Вывод: [ 'Летняя акция', '5000', '2024-01-01' ] (пример)

Рекомендации и лучшие практики

Оптимизация производительности при работе со строками

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

Обработка ошибок и исключений

  • Проверяйте входные данные на корректность, чтобы избежать ошибок форматирования.
  • Используйте блоки try...catch для обработки исключений, которые могут возникнуть при форматировании строк.

Альтернативные подходы и библиотеки для форматирования строк

  • Вместо Utilities.formatString() можно использовать библиотеки шаблонизаторов, такие как Handlebars или Mustache, для более сложного форматирования.
  • Рассмотрите использование специализированных библиотек для работы с датами и временем, таких как Moment.js (хотя ее придется подключать вручную, т.к. в Apps Script она не встроена «из коробки»), если требуется сложная работа с датами. Однако, учитывайте, что добавление внешних библиотек может повлиять на производительность.

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