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);
- Установка дополнения;
- Отправка запроса от веб-приложения (об этом ниже).
Меню
Скрипты можно запускать не только непосредственно из редактора, но и создавать для их запуска меню, который будут появляться при открытии документа в дополнение к основному интерфейсу. Вот небольшой пример кода, который показывает как это сделать:
[jscript]
// Устанавливаем триггер "при открытии документа"
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(‘Вы нажали на пункт подменю’);
}
[/jscript]
Веб-приложения
Еще с помощью 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:
- Google Формы. Создавай опросы, тесты и анкеты за 5 минут
- 4 лайфхака Gmail и Google Apps Script
- Автоматизируем Google Таблицы на Google Apps Script
- Google Apps Script для Docs в примерах
- Простые автоматизации для Google Drive
- Планируем жизнь с Google Calendar и Google Apps Script
- Как правильно делать автоматизированные рассылки в Gmail
10 комментариев
Форум →Полезно, спасибо
@Андрей Михайлов, :-)
Так и не понял, для чего нужны Google Docs.
@migmit, я тоже не особо понимал, пока где-то полгода не пришлось поработать в команде, где их используют постоянно.
Вот бы такой скрипт для жены написать
Еще одна толковая статья по интересной теме автоматизации.
Вся инфа собрана в одной статье, приведены ссылки для дальнейших раскопок.
Благодарствую
Ирина Вам вопрос как знатоку интернет ресурсов гугл:
Есть таблица с общим доступом для примерно 30 человек.
Каждый из них в этой таблице в режиме онлайн меняет данные (в основном создает новые строки и меняет в них те или иные столбцы, проставляя статусы). Проблемма в том, что строк все больше и больше, а каждый из 30-ти желает видеть только свои.
НО! Как только один из них выставляет какой-либо фильтр, то этот фильтр становится единственным видом для всех 30-ти.
Как это преодолеть? Как сделать так, чтобы у каждого мог быть свой аид таблицы, согласно своего фильтра?
@kulachok5, надо написать скрипт, который будет на отдельный лист помещать ячейки, соответствующие определенному условию и сделать меню для его запуска. Как делать скрипты для Google Таблиц написано здесь https://www.iphones.ru/iNotes/506236
Ирина, спасибо за очередную полезную статью!
@AlexFFF, :-)
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как на Mac сохранять историю буфера обмена
Можно ли отключить уведомления об обновлении iOS?
Почему на экране блокировки iPhone часто появляются карты для оплаты Apple Pay
Как на iPhone восстановить удаленные СМС или сообщения iMessage
Почему Force Touch на iPhone конфликтует со Skype
Видео в Safari на iOS 11 воспроизводится рывками
Как на iPhone и Mac найти все свои комментарии на YouTube
Как пользоваться приложениями бесплатно, если требуется оформить подписку