Что такое массив строк и когда его использовать?
Массив строк (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.
}