Почему я восхищаюсь Google Apps Script
Google Apps Script — диалект JavaScript для создания автоматизирующих скриптов и расширений для сервисов Google. Появился он в 2009 году и с тех пор стремительно развивается и набирает популярность. Ведь этот язык — уникальное средство автоматизации, которое доступно для использования и может быть полезно практически каждому человеку.
Для меня Google Apps Script — быстрые деньги, секретный трюк таймменджмента и одно из немногих развлечений, ради которых я готова бесплатно сидеть за компом.
В англоязычном интернет пространстве он довольно популярен: 12266 вопросов на StackOverlow. Но в России абсолютное большинство людей не знает о существовании GAS, либо их знания крайне поверхностны. На Хабре всего лишь 13 очень узкоспециальных публикаций с тегом Google Apps Script, а на русскоязычном StackOverflow только 23 вопроса по этой теме.
Я считаю, что это неправильно и ситуацию надо исправлять. Каждый человек должен иметь общее представление о возможностях Google Apps Script и быть морально готовым его использовать. Очень многим людям Google Apps Script может быть полезен. Если не в данный момент, то в обозримом будущем.
Эта статья расскажет вам о том, на что способен Google Apps Script. Надеюсь, что после ее прочтения вы осознаете магическую мощь этого языка и, если не начнете пользоваться им (большинству он нужен n-раз в год, не более), то хотя бы при случае порекомендуете своим знакомым.
С какими сервисами работает Google Apps Script?
На данный момент у языка есть классы и методы для работы со следующими сервисами (для каждого в скобках даны несколько из возможных примеров использования):
- Таблицы (обработка и экспорт данных в таблицах, создание пользовательских функций);
- Документы (создание документов, заполнение их информацией, изменение внешнего вида);
- Формы (генерация форм на основе электронных таблиц);
- Сайты (резервное копирование сайтов, создание новых страниц, сбор информации о комментариях и их редактирование);
- Диск (получение списка файлов на диске и информации о них, создание новых файлов, переименование файлов и распределение по папкам, загрузка на диск новых файлов из интернета);
- Gmail (автоответы, наведение порядка в почтовом ящике, групповые рассылки);
- Календарь (просмотр ближайших событий, создание новых напоминаний, отправка приглашений);
- Контакты (отбор контактов по определенному фильтру, извлечение из них телефонов, email-адресов и прочей информации);
- Карты (создание карт, добавление на них элементов, определение адрес по координатам и наоборот);
- Группы (получение списка групп в которых состоит человек с определенным email-адресом, получение списка пользователей конкретной группы);
- Переводчик (перевод текста с одного языка на другой).
Один автоматизирующий скрипт может работать сразу с несколькими сервисами. К примеру, в случае приближения нужного события в календаре делать групповую рассылку по списку из таблицы. Или генерировать и переводить отчеты на основе данных из форм. Возможны тысячи комбинаций.
Это совсем не сложно
В комментариях иногда пишут: «Я не хочу пользоваться Google Apps Script, так как не хочу заморачиваться с программированием». Но чтобы создавать автоматизации с помощью этого инструмента, практически не требуется умственного напряжения.
Нужно только понимать на абстрактном уровне что означают понятия: условный оператор, цикл, массив, функция, метод, объект, свойство объекта и знать английский язык/уметь пользоваться переводчиком, чтобы читать документацию, так как в ней есть множество готовых примеров кода.
Их можно копировать, комбинировать между собой, редактировать и получать в итоге успешно работающие автоматизации. И это очень быстрый процесс. Попробуйте и у вас все получится! Открываете любое из вышеперечисленных приложений, идете в пункт меню Инструменты → Редактор скриптов и вперед!
И полезно владельцам iPhone
«Офтоп, опять офтоп» — думает кто-то из читателей. Но тема Google Apps Script очень актуальна для пользователей iOS-устройств. Во-первых, у Google есть множество полезных приложений для iPhone/iPad, которые основаны на сервисах, поддерживающих GAS:
А во-вторых, можно настроить запуск автоматизаций для сервисов Google после выполнения определенных действий на iPhone: создания фотографии или контакта, изменения местоположения, включения страницы в список для чтения. Это возможно благодаря рецептам IFTTT.
IFTTT
C помощью mush-up сервиса IFTTT (IF This Than That) можно настраивать выполнение какого-либо действия (отправка письма, размещения поста в Facebook, создание записи в таблице Google) или в случае проишествия какого-либо события (изменения погоды, достижения какой-либо цели в Fitbit, добавление новости в Pocket). Перед Новым годом на iPhones.ru о нем вышла статья 40 рецептов IFTTT для гаджетов.
IFTTT помогает подружить сервисы Google (внося записи об определенных действиях на диск) с iPhone, Android, термостатом Nest, лампочкой Lifx, кондиционером, «умной» копилкой, фитнесс-браслетом и десятками других гаджетов. А также с социальными сетями, платформами для ведения блогов, rss-каналами, облачным хранилищем и еще кучей других сервисов.
Для людей с фантазией это открывает огромный простор для творчества и улучшения своей жизни.
Триггеры и расписание
Если вы не читали предыдущие статьи про Google Apps Script, то у вас может возникнуть вопрос: каким образом новый файл на диске/строка в электронной таблице, которую добавляет IFTTT, может послужить толчком к выполнению автоматизации?
Если в редакторе скриптов открыть пункт меню Ресуры → Триггеры текущего проекта, то можно настроить выполнение программ по времени:
- В конкретный день и час;
- Каждую неделю/день/месяц;
- Каждые n минут/часов/дней.
Или при совершении следующих событий:
- Открытие документа;
- Изменение документа (которое может производится с помощью IFTTT);
- Установка дополнения;
- Отправка запроса от веб-приложения (об этом ниже).
Меню
Скрипты можно запускать не только непосредственно из редактора, но и создавать для их запуска меню, который будут появляться при открытии документа в дополнение к основному интерфейсу. Вот небольшой пример кода, который показывает как это сделать:
// Устанавливаем триггер "при открытии документа" function onOpen() { // Создаем меню var ui = SpreadsheetApp.getUi(); ui.createMenu('Пример меню') // Добавляем в него пункт .addItem('Пункт меню', 'menuItem1') .addSeparator() // Создаем подменю и добавляем в него пункт .addSubMenu(ui.createMenu('Подменю') .addItem('Пункт подменю', 'menuItem2')) .addToUi(); } // Описываем функцию, которая будет запускаться при клике на пункт основного меню function menuItem1() { SpreadsheetApp.getUi() .alert('Вы нажали на пункт меню'); } // Описываем функцию, которая будет запускать при клике на пункт подменю function menuItem2() { SpreadsheetApp.getUi() .alert('Вы нажали на пункт подменю'); }
Веб-приложения
Еще с помощью Google Apps Script можно создавать полноценные веб-приложения с графическим интерфейсов на HTML/встраивать Google Apps Script на свои сайты. Простейшие пример: сделать на сайте форму загрузки файлов с компьютера на Google Drive или дашборд для мониторинга числа ответов на форму.
Парсинг сайтов и REST API
Еще на GAS можно делать http-запросы и обрабатывать их результаты. С помощью класса UrlFetchApp можно извлекать данные с веб-страниц и парсить XML/JSON ответы REST API сервисов.
К примеру, у нас на iPhones.ru есть программа, которая на входе получает список ссылок на AppStore из таблицы, а на выходе выдает блоки кода с информацией о приложениях и ссылками на иконки (картинки сохраняются на Google Диск под специальными названиями) и потом оттуда загружаются в админку WordPress.
Для чего я сама использую Google Apps Script
Когда я работала в ][, то у нас была старая тормознутая система для сведения бумажного номера, написанная на Delphi в лохматом году. Чтобы было удобнее, я сделала аналог в Google Документе. На GAS написаны функции для окраски строк в зависимости от этапа, на котором находится материал, нумерации страниц, подсчета незаполненных полос и генерации отчета о количестве материалов, которые находятся на каждом этапе (почти два десятка функций). Пожалуй, это самый масштабный пример личного использования GAS.
Если мне нужно спарсить несколько веб-страниц (не 2000, а 10–100), то я создаю Google Таблицу и открываю редактор скриптов. Это гораздо более быстрый и комфортный способ (для небольших объемов), чем использование curl (прежде всего из-за наглядности). Очень удобно, когда результаты парсинга можно сразу посмотреть в таблице и обернуть их в html-код. Чуть выше я приводила пример, как это может пригодиться автором статей про iOS-приложения.
И еще я регулярно использую GAS для создания групповых рассылок. Написать пару строк кода легче (это занимает минуту), чем отправить 30–40 писем (не говоря уже о больше объеме), настройке автоответов и отложенный отправки писем по условию.
Плюс еще целый ряд мелких одноразовых задач (в основном связанных с выгрузкой данных из почты/диска и работой с таблицами) были успешно решены с помощью GAS. Этот инструмент как швейцарский нож, который не надо носить с собой, так как он всегда на месте.
Но гораздо больше пользы с помощью Goole Apps Script я принесла не самой себе, а заказчикам скриптов (владельцам очень малого бизнеса), которым они были нужны, чаще всего, для обработки данных в таблицах или автоматизации продаж/оповещений клиентов.
Материалы про Google Apps Script
Все что нужно для начала экспериментов есть в официальной документации и справочнике. А описание готовых рецептов на русском языке можно найти в статья на iPhones.ru:
В закладки