Google Apps Script: Как работать с массивами строк?

Что такое массив строк и когда его использовать?

Массив строк (array of strings) – это упорядоченная коллекция элементов, где каждый элемент является строкой. В Google Apps Script массивы строк используются для хранения и обработки наборов текстовых данных, например, списка ключевых слов для рекламной кампании, списка URL-ов для проверки или списка названий продуктов. Использование массивов строк позволяет эффективно организовывать данные и выполнять над ними различные операции.

Когда следует использовать массивы строк?

Для хранения списка элементов, имеющих текстовое представление (имена, адреса, ключевые слова и т.д.).

Для передачи набора параметров в функцию.

Для хранения результатов обработки текстовых данных (например, результатов парсинга HTML).

Для работы с данными, полученными из Google Sheets, Google Docs и других сервисов.

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

В Google Apps Script массивы строк можно объявлять и инициализировать несколькими способами:

С использованием литерала массива:

/**
 * Объявляет и инициализирует массив строк с ключевыми словами.
 * @returns {string[]} Массив ключевых слов.
 */
function createKeywordArray(): string[] {
  const keywords: string[] = ["купить", "заказать", "цена"];
  return keywords;
}

С использованием конструктора Array:

/**
 * Объявляет и инициализирует пустой массив строк.
 * @returns {string[]} Пустой массив строк.
 */
function createEmptyStringArray(): string[] {
  const urls: string[] = new Array();
  return urls;
}

Комбинированный способ:

/**
 * Объявляет и инициализирует массив строк определенной длины.
 * @param {number} length Длина массива.
 * @returns {string[]} Массив строк указанной длины, заполненный null.
 */
function createStringArrayWithLength(length: number): string[] {
  const productNames: string[] = new Array(length);
  return productNames;
}

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

Хранение списка стоп-слов для фильтрации текста.

Разделение длинного текста на массив предложений.

Формирование URL-адресов на основе шаблона и массива параметров.

Основные операции с массивами строк

Добавление элементов в массив: `push()` и `unshift()`

push(element: string): Добавляет один или несколько элементов в конец массива и возвращает новую длину массива.

unshift(element: string): Добавляет один или несколько элементов в начало массива и возвращает новую длину массива.

/**
 * Добавляет элементы в массив строк.
 */
function addElementsToStringArray() {
  let keywords: string[] = ["SEO"];
  keywords.push("контекст"); // Добавляем в конец
  keywords.unshift("маркетинг"); // Добавляем в начало
  Logger.log(keywords); // Output: ["маркетинг", "SEO", "контекст"]
}

Удаление элементов из массива: `pop()` и `shift()`

pop(): Удаляет последний элемент из массива и возвращает его значение. Если массив пуст, возвращает undefined.

shift(): Удаляет первый элемент из массива и возвращает его значение. Если массив пуст, возвращает undefined.

/**
 * Удаляет элементы из массива строк.
 */
function removeElementsFromStringArray() {
  let keywords: string[] = ["маркетинг", "SEO", "контекст"];
  const lastKeyword: string | undefined = keywords.pop(); // Удаляем последний элемент ("контекст")
  const firstKeyword: string | undefined = keywords.shift(); // Удаляем первый элемент ("маркетинг")
  Logger.log(keywords); // Output: ["SEO"]
  Logger.log(lastKeyword); // Output: контекст
  Logger.log(firstKeyword); // Output: маркетинг
}

Получение доступа к элементам массива по индексу

Доступ к элементу массива осуществляется по его индексу, который начинается с 0.

/**
 * Получает доступ к элементу массива строк по индексу.
 */
function accessElementByIndex() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст"];
  const secondKeyword: string = keywords[1]; // Получаем элемент с индексом 1 ("SEO")
  Logger.log(secondKeyword); // Output: SEO
}

Изменение элементов массива

Элементы массива можно изменять, присваивая новое значение по индексу.

/**
 * Изменяет элемент массива строк по индексу.
 */
function modifyElementByIndex() {
  let keywords: string[] = ["маркетинг", "SEO", "контекст"];
  keywords[1] = "оптимизация"; // Изменяем элемент с индексом 1
  Logger.log(keywords); // Output: ["маркетинг", "оптимизация", "контекст"]
}

Итерация по массивам строк

Использование цикла `for` для перебора массива

Цикл for позволяет перебирать элементы массива, используя индекс.

/**
 * Перебирает массив строк с использованием цикла for.
 */
function iterateStringArrayWithForLoop() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст"];
  for (let i = 0; i < keywords.length; i++) {
    Logger.log(`Ключевое слово ${i + 1}: ${keywords[i]}`);
  }
}
Реклама

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

Метод forEach() предоставляет более лаконичный способ перебора массива.

/**
 * Перебирает массив строк с использованием метода forEach().
 */
function iterateStringArrayWithForEach() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст"];
  keywords.forEach((keyword: string, index: number) => {
    Logger.log(`Ключевое слово ${index + 1}: ${keyword}`);
  });
}

Примеры обработки строк в цикле

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

/**
 * Обрабатывает строки в цикле forEach().
 */
function processStringsInForEach() {
  const keywords: string[] = [" маркетинг ", "SEO", " Контекст "];
  keywords.forEach((keyword: string) => {
    const trimmedKeyword: string = keyword.trim().toLowerCase(); // Удаляем пробелы и приводим к нижнему регистру
    Logger.log(trimmedKeyword);
  });
}

Расширенные методы работы со строковыми массивами

Метод `join()`: объединение элементов массива в строку

Метод join(separator: string) объединяет все элементы массива в одну строку, разделяя их указанным разделителем.

/**
 * Объединяет элементы массива строк в строку.
 */
function joinStringArray() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст"];
  const combinedString: string = keywords.join(", "); // Объединяем элементы через запятую и пробел
  Logger.log(combinedString); // Output: маркетинг, SEO, контекст
}

Метод `split()`: разделение строки на массив строк

Метод split(separator: string) разделяет строку на массив строк по указанному разделителю.

/**
 * Разделяет строку на массив строк.
 */
function splitStringToArray() {
  const keywordsString: string = "маркетинг,SEO,контекст";
  const keywords: string[] = keywordsString.split(","); // Разделяем строку по запятой
  Logger.log(keywords); // Output: ["маркетинг", "SEO", "контекст"]
}

Метод `filter()`: фильтрация массива строк по условию

Метод filter(callback: (element: string, index: number, array: string[]) => boolean) создает новый массив, содержащий только те элементы, для которых callback возвращает true.

/**
 * Фильтрует массив строк.
 */
function filterStringArray() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст", "SMM"];
  const longKeywords: string[] = keywords.filter((keyword: string) => keyword.length > 3); // Фильтруем слова длиннее 3 символов
  Logger.log(longKeywords); // Output: ["маркетинг", "контекст", "SMM"]
}

Метод `map()`: преобразование массива строк

Метод map(callback: (element: string, index: number, array: string[]) => string) создает новый массив, каждый элемент которого является результатом вызова callback для соответствующего элемента исходного массива.

/**
 * Преобразует массив строк.
 */
function mapStringArray() {
  const keywords: string[] = ["маркетинг", "SEO", "контекст"];
  const uppercaseKeywords: string[] = keywords.map((keyword: string) => keyword.toUpperCase()); // Преобразуем в верхний регистр
  Logger.log(uppercaseKeywords); // Output: ["МАРКЕТИНГ", "SEO", "КОНТЕКСТ"]
}

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

Обработка данных из Google Sheets с использованием массивов строк

Чтение данных из Google Sheets в массив строк и дальнейшая их обработка.

/**
 * Читает данные из Google Sheets и обрабатывает их.
 */
function processDataFromSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const range = sheet.getDataRange();
  const values: any[][] = range.getValues();

  // Предположим, что первый столбец содержит ключевые слова.
  const keywords: string[] = values.map(row => String(row[0]));

  // Удаляем заголовок.
  keywords.shift();

  Logger.log(keywords);

  // Дальнейшая обработка keywords.
}

Работа с текстовыми файлами и логами

Чтение данных из текстового файла (например, лог-файла) и разделение его на строки.

/**
 * Читает данные из текстового файла и обрабатывает их.
 */
function processTextFile() {
  const fileId = "YOUR_FILE_ID"; // Замените на ID вашего текстового файла.
  const file = DriveApp.getFileById(fileId);
  const content: string = file.getBlob().getDataAsString();
  const lines: string[] = content.split("\n");

  Logger.log(lines);

  // Дальнейшая обработка lines.
}

Создание и форматирование отчетов с использованием строковых данных

Формирование текстового отчета на основе массива строк.

/**
 * Создает текстовый отчет на основе массива строк.
 */
function createReport() {
  const reportData: string[] = [
    "Отчет о рекламной кампании",
    "Дата: 2024-01-01",
    "Количество показов: 10000",
    "Количество кликов: 500",
  ];

  const reportText: string = reportData.join("\n");

  Logger.log(reportText);

  // Можно сохранить reportText в Google Docs или отправить по email.
}

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