Google Apps Script: Учебник для начинающих — Как автоматизировать Google Workspace?

Что такое Google Apps Script и зачем он нужен?

Google Apps Script (GAS) – это облачный язык сценариев, основанный на JavaScript, который позволяет автоматизировать задачи и расширять функциональность Google Workspace (ранее G Suite). Он позволяет интегрировать различные сервисы Google, такие как Google Sheets, Docs, Gmail, Calendar, Drive, и другие, а также взаимодействовать с внешними API. С помощью GAS можно создавать пользовательские меню, диалоговые окна, триггеры (автоматически запускаемые функции) и веб-приложения, что значительно повышает продуктивность и эффективность работы.

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

Преимущества автоматизации Google Workspace с помощью Apps Script

Автоматизация с помощью GAS предлагает множество преимуществ:

Экономия времени: Автоматизация рутинных задач, таких как обработка данных, отправка электронных писем или создание отчетов.

Повышение точности: Уменьшение вероятности ошибок, связанных с ручным вводом и обработкой данных.

Интеграция сервисов: Связывание различных сервисов Google Workspace для создания комплексных решений.

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

Улучшение совместной работы: Создание инструментов для совместного использования и автоматизации рабочих процессов.

Например, вы можете создать скрипт, который автоматически собирает данные из Google Analytics, обрабатывает их и создает отчет в Google Sheets, отправляя его по электронной почте заинтересованным сторонам. Или, можно создать веб-приложение для сбора заявок и автоматического создания документов Google Docs на основе полученных данных.

Обзор интерфейса редактора Apps Script

Для доступа к редактору Apps Script необходимо открыть любой документ Google (Sheets, Docs, Forms и т.д.) и выбрать "Инструменты" > "Редактор скриптов". Интерфейс редактора состоит из нескольких основных частей:

Строка меню: Содержит команды для работы с файлами, редактирования кода, запуска скриптов, отладки и просмотра.

Панель инструментов: Предоставляет быстрый доступ к наиболее часто используемым командам.

Редактор кода: Область, где вы пишете и редактируете код скрипта. Поддерживает подсветку синтаксиса, автодополнение и другие полезные функции.

Панель журналов: Отображает сообщения отладки, ошибки и результаты выполнения скрипта.

Панель свойств проекта: Позволяет настраивать параметры проекта, такие как имя, идентификатор и разрешения.

Редактор Apps Script интегрирован с облачной средой Google, поэтому все изменения автоматически сохраняются в Google Drive.

Основы программирования на Google Apps Script

Синтаксис JavaScript для Apps Script: переменные, типы данных, операторы

Google Apps Script основан на JavaScript, поэтому знание основ JavaScript необходимо для успешной работы. GAS поддерживает большинство возможностей JavaScript, включая переменные, типы данных, операторы, функции, объекты и массивы.

Переменные: Объявляются с помощью ключевых слов var, let или const. let и const предпочтительнее, так как обеспечивают большую предсказуемость и контроль над областью видимости.

Типы данных: Включают числовые значения (number), строки (string), логические значения (boolean), null, undefined и объекты (object).

Операторы: Поддерживаются арифметические операторы (+, -, *, /, %), операторы сравнения (==, !=, >, <, >=, <=), логические операторы (&&, ||, !) и операторы присваивания (=, +=, -=, *=, /=).

Пример:

/**
 * Функция для расчета суммы двух чисел.
 * @param {number} a - Первое число.
 * @param {number} b - Второе число.
 * @return {number} Сумма двух чисел.
 */
function sum(a: number, b: number): number {
  const result: number = a + b;
  return result;
}

const num1: number = 10;
const num2: number = 20;
const total: number = sum(num1, num2);
Logger.log(total); // Выведет 30

Работа с функциями и объектами в Apps Script

Функции – это блоки кода, которые выполняют определенную задачу. Объекты – это коллекции свойств и методов. GAS предоставляет множество встроенных объектов для работы с сервисами Google Workspace.

Пример:

/**
 * Функция для получения имени активного листа в Google Sheets.
 * @return {string} Имя активного листа.
 */
function getActiveSheetName(): string {
  const spreadsheet: GoogleAppsScript.Spreadsheet.Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet: GoogleAppsScript.Spreadsheet.Sheet = spreadsheet.getActiveSheet();
  const sheetName: string = sheet.getName();
  return sheetName;
}

Logger.log(getActiveSheetName());

В этом примере SpreadsheetApp – это встроенный объект, предоставляющий доступ к сервису Google Sheets. Метод getActiveSpreadsheet() возвращает объект Spreadsheet, а метод getActiveSheet() возвращает объект Sheet. Метод getName() объекта Sheet возвращает имя активного листа.

Условные операторы и циклы

Условные операторы (if, else if, else) позволяют выполнять разные блоки кода в зависимости от условия. Циклы (for, while, do...while) позволяют повторять выполнение блока кода несколько раз.

Пример:

/**
 * Функция для проверки, является ли число четным или нечетным.
 * @param {number} number - Число для проверки.
 * @return {string} 'четное' или 'нечетное'.
 */
function isEven(number: number): string {
  if (number % 2 === 0) {
    return 'четное';
  } else {
    return 'нечетное';
  }
}

Logger.log(isEven(10)); // Выведет 'четное'
Logger.log(isEven(7));  // Выведет 'нечетное'

/**
 * Функция для вывода чисел от 1 до 5 с помощью цикла for.
 */
function printNumbers(): void {
  for (let i: number = 1; i <= 5; i++) {
    Logger.log(i);
  }
}

printNumbers();

Работа с логами и отладка кода

Для отладки кода в Apps Script используется объект Logger. Метод Logger.log() позволяет выводить сообщения в панель журналов. Для более продвинутой отладки можно использовать встроенный отладчик, который позволяет выполнять код построчно, устанавливать точки останова и просматривать значения переменных.

Пример:

function debugExample(): void {
  const name: string = 'John Doe';
  Logger.log('Имя:', name);

  const age: number = 30;
  Logger.log('Возраст:', age);

  // Установите точку останова здесь и запустите отладчик.
  const message: string = `Hello, ${name}! You are ${age} years old.`;
  Logger.log('Сообщение:', message);
}

debugExample();

Автоматизация Google Sheets

Чтение и запись данных в таблицы Google Sheets

GAS позволяет читать и записывать данные в Google Sheets. Для этого используется объект SpreadsheetApp и его методы. Метод getActiveSpreadsheet() возвращает объект Spreadsheet, который представляет активную таблицу. Метод getSheetByName() возвращает объект Sheet, который представляет лист в таблице. Методы getRange() и getValue() позволяют читать данные из ячеек, а методы setValue() и setValues() позволяют записывать данные в ячейки.

Пример:

/**
 * Функция для чтения данных из ячейки A1 и записи их в ячейку B1.
 */
function readAndWriteData(): void {
  const spreadsheet: GoogleAppsScript.Spreadsheet.Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet: GoogleAppsScript.Spreadsheet.Sheet = spreadsheet.getSheetByName('Лист1');

  if (sheet !== null) {
    const value: any = sheet.getRange('A1').getValue();
    sheet.getRange('B1').setValue(value);
  } else {
      Logger.log('Sheet not found')
  }
}

readAndWriteData();
Реклама

Форматирование данных и работа с диапазонами

GAS позволяет форматировать данные в Google Sheets, такие как шрифт, цвет, выравнивание, формат чисел и т.д. Для этого используются методы объекта Range, такие как setFontFamily(), setFontColor(), setHorizontalAlignment(), setNumberFormat().

Пример:

/**
 * Функция для форматирования ячейки A1.
 */
function formatCell(): void {
  const spreadsheet: GoogleAppsScript.Spreadsheet.Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet: GoogleAppsScript.Spreadsheet.Sheet = spreadsheet.getSheetByName('Лист1');

   if (sheet !== null) {
    const range: GoogleAppsScript.Spreadsheet.Range = sheet.getRange('A1');
    range.setFontFamily('Arial')
         .setFontSize(12)
         .setFontColor('red')
         .setHorizontalAlignment('center')
         .setNumberFormat('$#,##0.00');
   } else {
      Logger.log('Sheet not found')
  }
}

formatCell();

Создание пользовательских функций для Google Sheets

GAS позволяет создавать пользовательские функции для Google Sheets, которые можно использовать так же, как и встроенные функции, такие как SUM(), AVERAGE() и т.д. Для этого необходимо создать функцию в Apps Script и указать, что она должна быть доступна в Google Sheets с помощью аннотации @customfunction.

Пример:

/**
 * Пользовательская функция для расчета квадрата числа.
 *
 * @param {number} number Число для расчета квадрата.
 * @customfunction
 */
function SQUARE(number: number): number {
  return number * number;
}

После сохранения скрипта функцию SQUARE() можно использовать в Google Sheets, например, =SQUARE(5).

Автоматизация обработки данных и создание отчетов

GAS можно использовать для автоматизации обработки данных в Google Sheets, например, для фильтрации, сортировки, агрегации и анализа данных. Также можно создавать отчеты на основе данных в Google Sheets и отправлять их по электронной почте.

Пример (абстрактный):

Предположим, у вас есть таблица с данными о продажах контекстной рекламы (кампания, показы, клики, расходы, доход). Вы можете написать скрипт, который автоматически:

Загружает данные из Google Analytics API (или другого источника).

Фильтрует данные по дате и кампании.

Рассчитывает ключевые показатели: CTR, CPC, ROI.

Создает сводную таблицу с агрегированными данными.

Форматирует таблицу и создает графики.

Отправляет отчет по электронной почте руководителю отдела маркетинга.

Автоматизация Google Docs и Gmail

Создание и редактирование документов Google Docs с помощью Apps Script

GAS позволяет создавать и редактировать документы Google Docs. Для этого используется объект DocumentApp и его методы. Метод create() создает новый документ, а метод openById() открывает существующий документ. Метод getBody() возвращает объект Body, который представляет содержимое документа. Методы appendParagraph(), appendText(), insertImage() позволяют добавлять текст, абзацы и изображения в документ.

Пример:

/**
 * Функция для создания нового документа Google Docs.
 */
function createDocument(): void {
  const doc: GoogleAppsScript.Document.Document = DocumentApp.create('Новый документ');
  const body: GoogleAppsScript.Document.Body = doc.getBody();
  body.appendParagraph('Привет, мир!');
  doc.saveAndClose();
}

createDocument();

Автоматическая отправка электронных писем через Gmail

GAS позволяет автоматически отправлять электронные письма через Gmail. Для этого используется объект GmailApp и его метод sendEmail(). Необходимо указать адрес получателя, тему письма и текст сообщения.

Пример:

/**
 * Функция для отправки электронного письма.
 */
function sendEmail(): void {
  GmailApp.sendEmail('recipient@example.com', 'Тема письма', 'Текст сообщения');
}

sendEmail();

Работа с вложениями и шаблонами писем

GAS позволяет работать с вложениями и шаблонами писем. Для отправки вложения необходимо передать объект Blob в качестве параметра attachments в метод sendEmail(). Для создания шаблонов писем можно использовать строки с переменными, которые заменяются значениями из скрипта.

Пример:

/**
 * Функция для отправки электронного письма с вложением.
 */
function sendEmailWithAttachment(): void {
  const file: GoogleAppsScript.Drive.File = DriveApp.getFileById('file_id');
  const blob: GoogleAppsScript.Base.Blob = file.getAs('application/pdf');

  GmailApp.sendEmail('recipient@example.com', 'Тема письма с вложением', 'Текст сообщения с вложением', {
    attachments: [blob],
  });
}

sendEmailWithAttachment();

Примеры автоматизации документооборота и рассылок

Автоматическое создание счетов: Скрипт, который автоматически создает счета на основе данных из Google Sheets и отправляет их клиентам по электронной почте.

Автоматическая генерация договоров: Скрипт, который автоматически генерирует договоры на основе данных из Google Forms и сохраняет их в Google Drive.

Рассылка новостей и акций: Скрипт, который автоматически отправляет персонализированные электронные письма с новостями и акциями подписчикам.

Триггеры и расписание задач

Типы триггеров в Google Apps Script (по времени, по событию)

Триггеры – это механизмы, которые позволяют автоматически запускать скрипты в ответ на определенные события или по расписанию. GAS поддерживает два основных типа триггеров:

Триггеры по времени: Запускают скрипт по расписанию (например, каждый час, каждый день, каждую неделю).

Триггеры по событию: Запускают скрипт в ответ на определенное событие (например, при открытии таблицы, при редактировании документа, при отправке формы).

Настройка триггеров для автоматического выполнения скриптов

Триггеры можно настраивать двумя способами:

Через пользовательский интерфейс редактора Apps Script: Выберите "Редактировать" > "Триггеры текущего проекта".

С помощью кода: Используйте объект ScriptApp и его методы newTrigger(), timeBased(), atHour(), everyDays() и т.д.

Пример:

/**
 * Функция для создания триггера по времени.
 */
function createTimeBasedTrigger(): void {
  ScriptApp.newTrigger('myFunction')
           .timeBased()
           .everyHours(6)
           .create();
}

Этот код создает триггер, который будет запускать функцию myFunction() каждые 6 часов.

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

Автоматическое резервное копирование данных: Триггер, который автоматически создает резервные копии данных из Google Sheets каждый день.

Автоматическая отправка уведомлений: Триггер, который автоматически отправляет уведомления по электронной почте при изменении данных в Google Sheets.

Автоматическая очистка старых данных: Триггер, который автоматически удаляет старые данные из Google Sheets каждый месяц.

Ограничения и лучшие практики при работе с триггерами

Ограничения на время выполнения: Скрипты, запускаемые триггерами, имеют ограничение на время выполнения (обычно 6 минут). Если скрипт превышает это ограничение, он будет остановлен.

Ограничения на количество триггеров: Существуют ограничения на количество триггеров, которые можно создать для одного проекта.

Лучшие практики: Используйте триггеры экономно и только для задач, которые необходимо автоматизировать. Оптимизируйте код скриптов, чтобы они выполнялись как можно быстрее. Обрабатывайте ошибки и исключения в скриптах, чтобы предотвратить сбои.

Надеюсь, этот учебник поможет вам начать работу с Google Apps Script и автоматизировать задачи в Google Workspace!


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