Открыть сервис

Google Apps Script

Google Apps Script — это облачный язык программирования и платформа для автоматизации задач, расширения функциональности и создания веб-приложений в экосистеме сервисов Google Workspace (ранее G Suite). Разработанный на основе языка JavaScript (ECMAScript), он предоставляет разработчикам доступ к API таких продуктов, как Google Таблицы, Google Документы, Google Презентации, Gmail, Google Календарь и Google Диск. Сценарии выполняются на серверах Google, не требуя установки дополнительного программного обеспечения на компьютер пользователя.

История

Платформа была анонсирована Google в августе 2009 года под названием Google Apps Script. Изначально она была доступна только для корпоративных пользователей Google Apps (ныне Google Workspace) и предназначалась для создания простых макросов и пользовательских функций в Google Таблицах. В 2011 году сервис стал доступен для всех владельцев аккаунтов Google, что значительно расширило его аудиторию.

Ключевые этапы развития включают:

  • 2011 год: Внедрение поддержки веб-приложений, позволяющей развёртывать скрипты как полноценные веб-страницы.
  • 2013 год: Запуск API Content Service для создания простых веб-сервисов и интеграции с внешними системами.
  • 2014 год: Введение интегрированной среды разработки (IDE) с отладчиком и автодополнением кода.
  • 2019 год: Релиз V8 Runtime — обновление, которое заменило старый движок Rhino на современный движок V8 (используемый в Google Chrome и Node.js), что обеспечило поддержку современного синтаксиса JavaScript (ES6+), улучшило производительность и совместимость.
  • 2020-е годы: Дальнейшее развитие API, добавление поддержки новых сервисов, таких как Google Chat и Google Forms, а также улучшение возможностей по работе с базами данных и внешними HTTP-запросами.

Архитектура и среда выполнения

Google Apps Script работает на серверной стороне Google. Каждый скрипт выполняется в изолированной среде (песочнице), что ограничивает прямой доступ к файловой системе, локальным сетям и аппаратному обеспечению пользователя. Взаимодействие с внешним миром возможно через встроенные сервисы (например, UrlFetchApp для HTTP-запросов) и API.

Скрипты хранятся в облаке и могут быть привязаны к конкретному файлу (например, к Google Таблице) или существовать как отдельный проект. Для выполнения скриптов используется квота (лимит на количество запросов, время выполнения и объём данных), которая варьируется в зависимости от типа аккаунта (бесплатный, Workspace, Google Apps Script для образования).

V8 Runtime

С 2019 года все новые проекты по умолчанию используют V8 Runtime. Это позволило:

  • Использовать современные возможности JavaScript (стрелочные функции, классы, промисы, async/await, деструктуризацию).
  • Повысить скорость выполнения скриптов в среднем в 2-3 раза по сравнению с Rhino.
  • Улучшить поддержку стандартных объектов JavaScript (Map, Set, Symbol).

Старый движок Rhino был окончательно выведен из эксплуатации в 2021 году, и все существующие скрипты были автоматически перенесены на V8.

Основные возможности и сервисы

Google Apps Script предоставляет доступ к широкому спектру встроенных сервисов, каждый из которых отвечает за взаимодействие с определённым продуктом Google.

Работа с Google Таблицами (SpreadsheetApp)

Наиболее популярный сценарий использования. Позволяет:

  • Создавать, читать и редактировать данные в ячейках, строках и столбцах.
  • Управлять листами, диапазонами, форматированием и условным форматированием.
  • Создавать пользовательские функции (кастомные формулы), которые можно вызывать прямо из ячейки таблицы (например, =MY_CUSTOM_FUNCTION(A1:B10)).
  • Настраивать триггеры на изменение, редактирование или открытие таблицы.
  • Создавать макросы для автоматизации повторяющихся действий.

Работа с Google Документами (DocumentApp)

  • Автоматическое создание и редактирование текстовых документов.
  • Вставка текста, изображений, таблиц и закладок.
  • Генерация документов на основе шаблонов (например, создание договоров или отчётов).

Работа с Gmail (GmailApp)

  • Отправка писем (в том числе массовых рассылок с ограничениями).
  • Поиск, чтение и удаление писем по заданным критериям.
  • Управление метками и черновиками.

Работа с Google Календарём (CalendarApp)

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

Работа с Google Диском (DriveApp)

  • Создание, копирование, перемещение и удаление файлов и папок.
  • Получение метаданных файлов (размер, тип, дата создания).
  • Поиск файлов по имени и содержимому.

Веб-приложения и API

Скрипт можно развернуть как веб-приложение, доступное по URL. Это позволяет:

  • Создавать простые интерфейсы (HTML, CSS, JavaScript) для ввода данных.
  • Разрабатывать REST-подобные API для интеграции с внешними системами.
  • Использовать сервисы ContentService и HtmlService для генерации ответов.

Внешние API и базы данных

  • UrlFetchApp: Выполнение HTTP-запросов к любым внешним серверам (GET, POST, PUT, DELETE). Поддерживает работу с JSON, XML и другими форматами данных.
  • JDBC: Подключение к внешним базам данных (MySQL, PostgreSQL, Oracle) через JDBC-драйверы. Позволяет выполнять SQL-запросы.
  • BigQuery: Взаимодействие с Google BigQuery для анализа больших данных.

Триггеры

Триггеры — это механизм автоматического запуска скрипта при наступлении определённого события. Они делятся на два типа:

  • Простые триггеры: Активируются при выполнении пользователем действий в интерфейсе Google Workspace (например, onOpen — при открытии файла, onEdit — при изменении ячейки). Имеют ограниченный набор возможностей и не требуют авторизации.
  • Устанавливаемые триггеры: Настраиваются вручную через редактор скриптов и могут запускаться по расписанию (например, каждый час, каждый день) или при наступлении определённых событий (например, при отправке формы, при получении письма). Требуют авторизации и могут выполнять сложные операции.

Ограничения и квоты

Google Apps Script имеет ряд ограничений, направленных на предотвращение злоупотреблений и защиту инфраструктуры Google. Основные квоты для бесплатных аккаунтов (Google Workspace и корпоративные аккаунты имеют более высокие лимиты):

  • Время выполнения: Максимум 6 минут на одно выполнение скрипта (для простых триггеров — 30 секунд).
  • Количество HTTP-запросов: 20 000 в день.
  • Объём данных: 50 МБ на один запрос (входящие/исходящие данные).
  • Количество триггеров: Не более 20 на один проект.
  • Количество пользовательских функций: Не более 500 на одну таблицу.

Эти квоты могут быть увеличены для платных аккаунтов Google Workspace или при использовании Google Apps Script для образования.

Примеры применения

Google Apps Script используется в самых разных сценариях автоматизации:

  • Бизнес-процессы: Автоматическая отправка уведомлений по электронной почте при изменении статуса заказа в Google Таблице, создание отчётов и дашбордов, синхронизация данных между Google Таблицами и внешними CRM-системами.
  • Образование: Автоматическая проверка тестов, создание расписаний и рассылок, генерация сертификатов для студентов.
  • Разработка: Создание прототипов веб-приложений, интеграция с API сторонних сервисов (например, Telegram, Slack, Trello), автоматизация задач по обработке данных.
  • Личное использование: Управление списком задач, автоматическая архивация писем, создание напоминаний на основе данных из календаря.

Критика и ограничения

Несмотря на широкие возможности, Google Apps Script имеет ряд недостатков:

  • Зависимость от экосистемы Google: Скрипты не могут выполняться локально и полностью привязаны к облачной инфраструктуре Google. При сбоях в работе сервисов Google скрипты становятся недоступны.
  • Ограниченная производительность: Время выполнения и квоты могут быть недостаточными для обработки больших объёмов данных (миллионы строк) или выполнения сложных алгоритмов.
  • Отсутствие полноценного контроля версий: Встроенная система управления версиями (Revision History) примитивна по сравнению с Git и не поддерживает ветвление и слияние.
  • Сложность отладки: Встроенный отладчик работает только в браузере и не всегда предоставляет достаточную информацию для поиска ошибок, особенно в асинхронном коде.
  • Отсутствие поддержки некоторых современных технологий: Нет нативной поддержки WebSockets, модульной системы (ES Modules) и некоторых других возможностей, доступных в Node.js.

Альтернативы

Существуют альтернативные платформы для автоматизации и создания веб-приложений:

  • Microsoft Power Automate (ранее Microsoft Flow): Платформа для автоматизации рабочих процессов в экосистеме Microsoft 365.
  • Zapier и Make (ранее Integromat): Сторонние сервисы для интеграции различных веб-приложений без написания кода.
  • Node.js с использованием Google APIs Client Library: Более гибкий и мощный подход, позволяющий запускать код на собственном сервере и не иметь ограничений по квотам Google Apps Script.

Источники

  • Google Developers: Google Apps Script Documentation
  • Google Workspace Updates Blog (официальный блог обновлений)
  • Официальная документация по V8 Runtime для Google Apps Script
  • Статья «Google Apps Script: A Beginner’s Guide» на сайте Google Cloud

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →