Что такое массив и зачем он нужен?
Массив – это упорядоченная коллекция элементов, которая позволяет хранить несколько значений под одним именем переменной. В Google Apps Script массивы используются для эффективного хранения и обработки наборов данных, будь то списки клиентов для email-рассылки, данные о рекламных кампаниях или результаты анализа данных из Google Sheets. Использование массивов значительно упрощает код и делает его более читаемым, особенно при работе с большими объемами информации.
Основные характеристики массивов в Apps Script
- Динамический размер: Размер массива в Apps Script не фиксирован и может изменяться в процессе выполнения скрипта. Это позволяет добавлять или удалять элементы по мере необходимости.
- Различные типы данных: Массив может содержать элементы разных типов (числа, строки, булевы значения, другие массивы, объекты).
- Нулевая индексация: Первый элемент массива имеет индекс 0, второй – 1 и так далее.
- Объекты: В Apps Script массивы являются объектами, что означает, что у них есть методы и свойства.
Способы определения массивов в Google Apps Script
Литеральный способ: []
Самый простой и распространенный способ создания массива – использование литеральной нотации []
:
/**
* @description Создает массив ключевых слов для рекламной кампании.
* @return {string[]} Массив ключевых слов.
*/
function createKeywordsArray() {
const keywords = ["купить", "заказать", "цена", "скидка"];
Logger.log(keywords); // [купить, заказать, цена, скидка]
return keywords;
}
Этот способ наиболее предпочтителен за его краткость и читаемость.
Использование конструктора Array()
Можно создать массив с помощью конструктора Array()
:
/**
* @description Создает массив email адресов.
* @param {number} size Размер массива.
* @return {string[]} Массив email адресов.
*/
function createEmailArray(size) {
const emails = new Array(size); // Создает массив указанного размера
Logger.log(emails.length); // size
return emails;
}
Или:
/**
* @description Создает массив с предопределенными значениями.
* @return {number[]} Массив чисел.
*/
function createNumbersArray() {
const numbers = new Array(1, 2, 3, 4, 5);
Logger.log(numbers); // [1.0, 2.0, 3.0, 4.0, 5.0]
return numbers;
}
Хотя этот способ и рабочий, литеральный способ создания массивов обычно более предпочтителен.
Создание многомерных массивов
В Apps Script можно создавать многомерные массивы, представляющие собой массивы массивов. Это полезно для представления табличных данных:
/**
* @description Создает таблицу данных об эффективности рекламных кампаний.
* @return {string[][]} Двумерный массив данных.
*/
function createCampaignDataTable() {
const campaignData = [
["Кампания 1", 1000, 100],
["Кампания 2", 1500, 150],
["Кампания 3", 2000, 200]
];
Logger.log(campaignData[0][1]); // 1000 (затраты для Кампании 1)
return campaignData;
}
Примеры использования массивов
Хранение и обработка данных из Google Sheets
Массивы часто используются для получения данных из Google Sheets и их последующей обработки:
/**
* @description Считывает данные из Google Sheets и обрабатывает их.
*/
function processSheetData() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const range = sheet.getDataRange();
const values = range.getValues(); // Получаем данные в виде двумерного массива
//values.forEach(row => Logger.log(row));
//Вывод каждой строки
for (let i = 0; i < values.length; i++){
Logger.log(values[i])
}
}
Формирование динамических списков
Массивы позволяют динамически формировать списки элементов на основе определенных условий:
/**
* @description Создает список активных рекламных кампаний.
* @param {object[]} campaigns Массив объектов рекламных кампаний.
* @return {string[]} Массив названий активных кампаний.
*/
function getActiveCampaigns(campaigns) {
const activeCampaigns = [];
for (let i = 0; i < campaigns.length; i++) {
if (campaigns[i].status === "active") {
activeCampaigns.push(campaigns[i].name);
}
}
return activeCampaigns;
}
Работа с данными JSON
При работе с API часто используются данные в формате JSON. Apps Script позволяет легко преобразовывать JSON в массивы и обратно:
/**
* @description Парсит JSON строку и выводит данные.
*/
function parseJsonData() {
const jsonData = '{"name": "Example", "clicks": 123, "cost": 12.34}';
const parsedData = JSON.parse(jsonData);
Logger.log(parsedData.name); // Example
Logger.log(parsedData.clicks); // 123
Logger.log(parsedData.cost); // 12.34
}
Основные методы работы с массивами
Добавление и удаление элементов: push()
, pop()
, shift()
, unshift()
push(element)
: добавляет элемент в конец массива.pop()
: удаляет последний элемент из массива и возвращает его.shift()
: удаляет первый элемент из массива и возвращает его.unshift(element)
: добавляет элемент в начало массива.
Изменение массивов: splice()
, slice()
splice(start, deleteCount, item1, ..., itemX)
: изменяет содержимое массива, удаляя или заменяя существующие элементы и/или добавляя новые.slice(start, end)
: возвращает новый массив, содержащий часть исходного массива, отstart
доend
(не включаяend
).
Перебор элементов массива: for
, forEach()
, map()
for
: Классический цикл для перебора элементов массива по индексу.forEach(callback)
: Выполняет указанную функцию один раз для каждого элемента в массиве.map(callback)
: Создает новый массив, содержащий результаты вызова указанной функции для каждого элемента исходного массива.
Распространенные ошибки и как их избежать
Неправильное определение размера массива
При создании массива с помощью конструктора Array(size)
убедитесь, что размер соответствует вашим потребностям. Создание слишком большого массива может привести к неэффективному использованию памяти.
Использование некорректных индексов
Помните, что индексация массивов начинается с 0. Обращение к индексу, выходящему за пределы массива, приведет к ошибке.
Сравнение массивов
Нельзя сравнивать массивы напрямую с помощью оператора ==
. Этот оператор сравнивает ссылки на объекты, а не их содержимое. Для сравнения массивов необходимо сравнивать их элементы поочередно.