Что такое Google Apps Script и зачем он нужен в Google Sheets
Google Apps Script (GAS) – это облачный язык сценариев, основанный на JavaScript, который позволяет автоматизировать задачи и расширять функциональность Google Workspace, включая Google Sheets. GAS дает возможность создавать собственные функции, автоматизировать рутинные операции и интегрировать Google Sheets с другими сервисами Google и внешними API.
В контексте Google Sheets, GAS позволяет значительно расширить возможности таблиц. Вместо ручного выполнения повторяющихся действий, можно написать скрипт, который будет делать это автоматически, экономя время и снижая вероятность ошибок.
Преимущества использования скриптов для автоматизации задач
Использование скриптов в Google Sheets предоставляет множество преимуществ:
Автоматизация: Автоматическое выполнение повторяющихся задач, таких как форматирование данных, отправка отчетов, обновление информации из внешних источников.
Расширение функциональности: Создание пользовательских функций, недоступных во встроенных возможностях Google Sheets.
Интеграция: Взаимодействие с другими сервисами Google (Gmail, Calendar, Drive) и внешними API для получения и обработки данных.
Персонализация: Адаптация Google Sheets под конкретные потребности и бизнес-процессы.
Уменьшение ошибок: Скрипты выполняют задачи последовательно и точно, снижая вероятность человеческих ошибок.
Основные понятия: скрипты, функции, триггеры
Скрипт: Это набор инструкций (код), написанный на Google Apps Script, который выполняет определенную задачу.
Функция: Это блок кода внутри скрипта, который выполняет определенное действие. Функции могут принимать аргументы и возвращать значения.
Триггер: Это механизм автоматического запуска скрипта при определенных событиях, таких как открытие таблицы, изменение данных или наступление определенного времени.
Как открыть редактор скриптов в Google Sheets
Открытие редактора скриптов через меню «Инструменты»
Чтобы открыть редактор скриптов в Google Sheets, выполните следующие шаги:
Откройте таблицу Google Sheets, в которую вы хотите добавить скрипт.
В верхнем меню выберите "Инструменты".
В выпадающем меню выберите "Редактор скриптов". Откроется новое окно или вкладка браузера с редактором Google Apps Script.
Обзор интерфейса редактора скриптов
Интерфейс редактора скриптов состоит из нескольких основных частей:
Строка меню: Содержит команды для работы с файлами, редактирования кода, запуска скриптов, просмотра и отладки.
Панель инструментов: Предоставляет быстрый доступ к основным функциям, таким как сохранение, запуск, отладка и развертывание скриптов.
Редактор кода: Основная область, где вы пишете и редактируете код скрипта. Поддерживает подсветку синтаксиса и автодополнение.
Лог выполнения (Logger): Отображает сообщения, выводимые скриптом в процессе выполнения, полезно для отладки.
Редактор триггеров: Позволяет настроить автоматический запуск скриптов при определенных событиях.
Добавление и редактирование скриптов
Создание нового скрипта с нуля
После открытия редактора скриптов автоматически создается новый проект. Если необходимо создать новый файл скрипта, нажмите "Файл" -> "Создать" -> "Скрипт". Новый файл скрипта будет содержать пустую функцию function myFunction() {}.
Ввод и редактирование кода скрипта
В редакторе кода можно вводить и редактировать код Google Apps Script. Редактор поддерживает подсветку синтаксиса, что облегчает чтение и написание кода. Пример:
/**
* @OnlyCurrentDoc
*/
/**
* Функция для получения имени текущего пользователя.
* @return {string} Имя пользователя.
*/
function getCurrentUserName(): string {
const user: string = Session.getActiveUser().getEmail();
return user;
}
/**
* Функция для записи имени пользователя в ячейку A1 текущего листа.
*/
function writeUserNameToSheet(): void {
const sheet: GoogleAppsScript.Spreadsheet.Sheet = SpreadsheetApp.getActiveSheet();
const userName: string = getCurrentUserName();
sheet.getRange('A1').setValue(userName);
}Сохранение скрипта
Для сохранения скрипта нажмите на значок дискеты на панели инструментов или выберите "Файл" -> "Сохранить". При сохранении вам будет предложено ввести название скрипта. Рекомендуется давать скриптам понятные имена, отражающие их функциональность.
Основные элементы синтаксиса Google Apps Script (переменные, функции, циклы)
Google Apps Script, как и JavaScript, поддерживает следующие основные элементы синтаксиса:
Переменные: используются для хранения данных. Объявляются с помощью var, let, или const. Рекомендуется использовать let и const.
Функции: блоки кода, выполняющие определенные задачи. Объявляются с помощью ключевого слова function.
Циклы: позволяют повторять выполнение блока кода несколько раз. Основные типы циклов: for, while, do...while.
Условные операторы: позволяют выполнять код в зависимости от условия. Основные операторы: if, else if, else.
Пример использования цикла и условного оператора:
/**
* Функция для подсчета количества ячеек со значением больше 10 в диапазоне A1:A10.
* @return {number} Количество ячеек со значением больше 10.
*/
function countValuesGreaterThanTen(): number {
const sheet: GoogleAppsScript.Spreadsheet.Sheet = SpreadsheetApp.getActiveSheet();
const range: GoogleAppsScript.Spreadsheet.Range = sheet.getRange('A1:A10');
const values: any[][] = range.getValues();
let count: number = 0;
for (let i = 0; i 10) {
count++;
}
}
return count;
}Запуск и отладка скриптов
Запуск скрипта вручную
Для запуска скрипта вручную выберите функцию, которую хотите запустить, в выпадающем списке на панели инструментов и нажмите на значок "Выполнить". Перед первым запуском скрипта вам будет предложено предоставить ему необходимые разрешения.
Использование журнала (Logger) для отладки
Для отладки скриптов используйте журнал (Logger). Выводите в журнал значения переменных и сообщения, чтобы отслеживать ход выполнения скрипта.
function myFunction() {
let myVariable: string = "Hello, world!";
Logger.log(myVariable);
}Для просмотра журнала выберите "Просмотр" -> "Журналы".
Обработка ошибок и исключений
Для обработки ошибок используйте блоки try...catch. Это позволяет предотвратить аварийное завершение скрипта при возникновении ошибки.
function myFunction() {
try {
// Код, который может вызвать ошибку
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("NonExistentSheet").activate();
} catch (e) {
// Обработка ошибки
Logger.log("Ошибка: " + e);
}
}Примеры скриптов для Google Sheets
Автоматическая отправка email уведомлений
/**
* Отправляет email уведомление при изменении ячейки A1.
*/
function sendEmailNotification(): void {
const sheet: GoogleAppsScript.Spreadsheet.Sheet = SpreadsheetApp.getActiveSheet();
const cell: GoogleAppsScript.Spreadsheet.Range = sheet.getRange('A1');
const value: any = cell.getValue();
const recipient: string = 'recipient@example.com';
const subject: string = 'Изменение в Google Sheets';
const body: string = `Ячейка A1 была изменена на значение: ${value}`;
MailApp.sendEmail(recipient, subject, body);
}Создание пользовательских функций (Custom Functions)
/**
* Пользовательская функция для умножения двух чисел.
* @param {number} a Первое число.
* @param {number} b Второе число.
* @customfunction
*/
function MULTIPLY(a: number, b: number): number {
return a * b;
}Чтобы использовать эту функцию в Google Sheets, введите =MULTIPLY(A1, B1) в ячейку.
Автоматизация импорта и экспорта данных
/**
* Функция для импорта данных из CSV файла по URL.
*/
function importDataFromCSV(): void {
const url: string = 'https://example.com/data.csv';
const response: GoogleAppsScript.URL_Fetch.HTTPResponse = UrlFetchApp.fetch(url);
const csvData: string = response.getContentText();
const csvArray: string[][] = Utilities.parseCsv(csvData);
const sheet: GoogleAppsScript.Spreadsheet.Sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, csvArray.length, csvArray[0].length).setValues(csvArray);
}Использование триггеров для автоматического запуска скриптов
Триггеры позволяют автоматически запускать скрипты при определенных событиях. Для создания триггера выберите "Изменить" -> "Триггеры текущего проекта" в редакторе скриптов. Настройте параметры триггера (событие, время запуска, функция) и сохраните его.
Например, можно настроить триггер для автоматической отправки email уведомления при каждом изменении данных в таблице.