Как получать данные от сторонних сервисов — создаем вебхук с помощью Google Apps Scripts

При внедрении бизнес-процессов важно получать данные от внешних сервисов при наступлении того или иного события — это может быть передача данных из CRM-систем, сервисов оплаты, систем аналитики, интернет-магазинов. В большинстве таких случаев вам нужен вебхук.
Вебхук (webhook) — механизм получения уведомлений о происходящих в системе событиях с помощью функций обратных вызовов. Когда случается интересующее клиента событие, сервер отправляет HTTP-запрос на URL-адрес, предоставленный клиентом для приема вебхуков.Если вам нужно оперативно обработать полученные через вебхук данные, можно воспользоваться настройкой вебхука в Google Apps Scripts.
Вначале необходимо создать новый проект. Сделать это можно несколькими способами:
- Перейти в панель создания скриптов и кликнуть «Создать проект».
- Создать пустую таблицу Google Spreadsheets и выбрать в меню «Инструменты» — «Редактор скриптов».
Дайте название вашему проекту. По умолчанию вам будет предоставлен файл Код.gs и создана пустая функция myFunction(). В этой среде будем обpaбатывать данные, полученные от внешней системы. Как же наш код примет эти данные? Для этого мы развернем скрипт как веб-приложение, которому будет выделен публичный веб-адрес.
В меню выбираем «Опубликовать» — «Развернуть как веб-приложение».
Указываем текущую версию нашего приложения, например, v1.0. Выполнение скрипта оставляем из-под нашего аккаунта. В поле “Who has access to the app” выбираем “Anyone, even anonymous”:
Жмем Deploy. Копируем сгенерированный URL.
Обратите внимание, что были сгенерированы два URL-адреса: текущий URL нашего веб-приложения, который заканчивается сегментом /exec и тестовый URL под анкором latest code, который заканчивается сегментом /dev. Первый URL — рабочий, который и будет играть роль вебхука.
Любые изменения в скрипте потребуют повторного деплоя с указанием новой версии. Если же вы хотите наблюдать за результатом своих изменений, не меняя каждый раз версию скрипта, используйте тестовый URL, который будет всегда запускать последний сохраненный код.
Наше приложение развернуто, и мы можем принимать данные извне. Однако, если вы откроете URL в браузере, вы столкнетесь с ошибкой: «Не удалось найти функцию скрипта: doGet».
Так происходит, потому что в нашем скрипте пока нет функций, которые перехватывали бы полученные данные. Для этого в GAS предусмотрено два зарезервированных метода: doGet() и doPost(), которые отвечают за получение значений, отправленных с помощью GET и POST запросов соответственно.
Оба метода принимают переменную «e», благодаря которой можно получить доступ к значениям.Формат, в котором эта переменная предоставляет данные — JSON. С полным перечнем доступных полей можно ознакомиться в документации в разделе Request Parameters. Нас интересует поле e.parameter, через которое мы и будем получать значения необходимых параметров. Возникает вопрос: к каким переменным обращаться?
Набор параметров, который внешняя система будет отправлять на ваш URL, зачастую предусмотрен самой системой и приведен в документации по использованию вебхуков. Если вы не желаете получать абсолютно все возможные переменные, некоторые сервисы позволяют вам выбирать интересующие поля из общего множества.
Например, при настройке вебхука в сервисе UptimeRobot на мой URL будут отправлены данные:
В итоге, внутри метода doGet(e) я могу обратиться к любому из вышеперечисленных полей: e.parameter.monitorUrl, e.parameter.alertType, e.parameter.alertDetails и так далее. Всё это работает и для метода doPost(e).
Есть объект parameter, а есть объект parameters. Отличие в том, что каждый ключ в parameters содержит соответствующий массив значений, в то время как каждый ключ в parameter — только единичную величину.
Получив доступ к данным, можем обработать их или отправить через API в другие сервисы. Рассмотрим разные способы отправки.
Вывод данных в таблицу Google Spreadsheets
Если хотим анализировать данные в таблице, можем записывать их в документ при каждом обращении к вебхуку с помощью класса SpreadsheetApp.
function doGet(e) { writeToGoogleSpreadsheet(e.parameter) ;}function writeToGoogleSpreadsheet(params) { var spreadsheet = SpreadsheetApp.openById(\"id_of_my_google_spreadsheet\") ; var sheetData = spreadsheet.getSheetByName(\\\'Data\\\') ; sheetData.appendRow([ params.monitorURL, params.alertType, params.alertDetails ]) ;}Настройка оповещений через бота Telegram
Как создать чат-бот для Telegram-канала — инструкция для администраторов Этот способ удобен тем, что будет уведомлять вас о совершенной конверсии или наступлении другого события в режиме реального времени с помощью
Чтобы создать своего бота, просто напишите пользователю @BotFather и следуйте его инструкциям. Как только вы создали бота и получили свой ключ (токен) авторизации, переходите в раздел документации Bot API, чтобы выполнить необходимые настройки. Для отправки сообщений нам понадобится api-метод sendMessage(), который принимает следующие параметры: chat_id (в данном случае ваш персональный ID в телеграм), text — передаваемое сообщение и (опционально) parse_mode — формат, в котором отправляем сообщение. Бот @my_id_bot подскажет ваш персональный айди.
function doGet(e) { sendToTelegram(e.parameter) ;} function sendToTelegram(params) { var token = \"your_telegram_bot_token\"; var telegramUrl = \"https://api.telegram.org/bot\" + token; var id = \"your_telegram_chat_id\"; var text = \"<pre>\" + params.monitorUrl + \" \" + params.alertDetails + \"pre>\"; var url = telegramUrl + \"/sendMessage?chat_id=\" + id + \"&parse_mode=html&text=\" + text; var response = UrlFetchApp.fetch(encodeURI(url)) ;}Отправка данных на почту
С помощью класса MailApp легко отправить данные и на свой электронный ящик. Подробнее о возможностях класса читайте в документации.
function doGet(e) { sendMail(e.parameter) ;}function sendMail(params) { var emailAddress = \"my-account@gmail.com\"; var message = \"Domain \" + params.monitorUrl + \" \" + params.alertDetails; var subject = \"Alert: problem with domain \" + params.monitorUrl; MailApp.sendEmail(emailAddress, subject, message) ;}Кроме рассмотренных выше примеров, этот подход можно применять для решения других задач, когда необходимо получить данные от внешних сервисов при наступлении определенного события.
Хотите узнать больше о решениях для бизнес-процессов? Подписывайтесь на нашу рассылку:
Истории бизнеса и полезные фишкиКомментарии:
Всё, что вы хотели знать о функциях вычисляемых полей, но боялись спросить....
04 06 2026 12:43:16
Исследование по 38,5 миллионам кликов в 22 тематиках в 391 городе страны....
03 06 2026 8:26:10
В семье Leo Burnett - 7750 человек из 84-х стран мира. В Украине всего - 90 творческих единиц....
02 06 2026 23:45:38
Нескучный инструктаж на примере @netpeak_ua о том, зачем компании корпоративный Twitter для продвижения контента, компании или персоны. А еще про хештеги, поиск читателей, аналитику, стиль ведения вашего микроблога, создание сообщества и акции...
01 06 2026 16:45:36
Новая услуга для бизнесов, которым большое количество подписчиков не приносит продаж...
31 05 2026 15:33:31
Услуга уровня элит-класса в конкурентной нише и не в самом простом для продвижения регионе. Рассказываем, как привели целевой трафик по минимальной цене. Узнать!...
30 05 2026 8:53:50
Используем возможности Google Cloud Platform в работе с R...
29 05 2026 1:42:33
Инструкция по технической подготовке к продвижению...
28 05 2026 9:25:59
Забавные и полезные штуки от Google и как их найти...
27 05 2026 7:59:20
Николь Лаззаро из XEODesign провела исследование о том, почему мы играем или не играем в игры....
26 05 2026 5:16:28
Как сделать рекламу в Universal App Campaign 2.0 максимально эффективной...
25 05 2026 10:40:52
Почему нельзя просто взять и перевести. В худшем случае специализированный текст на иностранном языке должен стать для переводчика дорожной картой, в лучшем — источником вдохновения. Почему? Читайте об этом!...
24 05 2026 4:29:35
Инструкция для новичков: как быстро отправить почтовую рассылку клиентам...
23 05 2026 21:30:37
Результаты грамотного внедрения технического SEO-аудита...
22 05 2026 13:41:32
Информация для бизнесменов, интернет-маркетологов и всех, кто интересуется продвижением бизнеса в интернете....
21 05 2026 2:11:43
Человек скачал ваше приложение, воспользовался им один раз и … забыл. Что с этим делать, читайте в Netpeak Journal....
20 05 2026 3:25:16
Профессор психологии Йельского университета разработала курс по обретению счастья. Его прошли уже 3,5 млн человек...
19 05 2026 13:22:59
Статистика изменений долей рынка после майского и декабрьского апдейта Google в 2020 году....
18 05 2026 6:42:46
Как упростить знакомство клиента с компанией, продуктом или услугами....
17 05 2026 1:23:24
Доля органического трафика увеличилась с 14% до 44%, а небрендового — на 184%....
16 05 2026 3:41:54
Спойлер: чтобы получить наилучший результат с наименьшими усилиями и затратами времени....
15 05 2026 23:25:45
Какой рекламный инструмент использовать, чтобы получить максимальный результат...
14 05 2026 5:51:25
Как вывести в индекс страницы сайта на Ajax: от необходимости их создания, роли SEO, ускорении индексации и реальные рекомендации всего в трех пунктах, чтобы основное преимущество таких сайтов работало безотказно...
13 05 2026 2:31:52
Зачем размещаться на AppSumo и как запустить продукт в 2021 году? Лайфхаки по размещению, личный опыт и результаты по проведенной кампании...
12 05 2026 1:51:32
Как подготовить фиды в Яндекс.Директ для разных тематик...
11 05 2026 0:27:10
В этой статье я покажу пример визуальной работы с закладкой и пошагово разберу процесс их создания и применения для удобства визуализации данных...
10 05 2026 19:52:23
Каким образом бизнес-модель маркетплейса может помочь увеличить трафик интернет-магазина в целом....
09 05 2026 0:28:32
Все, что нужно знать об UTM-метках: зачем использовать, как правильно сгенерить и анализировать....
08 05 2026 0:20:13
Опыт удаленки стартапа lemlist. Как сотрудники работали онлайн в доковидные времена и совмещали профессиональную деятельность с тимбилдингом. Читайте в коротком посте Владимира Поло, основателя AcademyOcean....
07 05 2026 16:45:22
Стоит установить и освоить Google Tag Manager для расширения представления сайта в выдаче...
06 05 2026 18:16:32
Положительная динамика с первых месяцев работы....
05 05 2026 4:40:29
Мануал, по которому вы создадите специальный отчет, чтобы применить его на своем сайте....
04 05 2026 8:50:33
Как сократить время на создание собственных отчетов, если вы работаете с большими рекламными аккаунтами...
03 05 2026 21:51:59
Используем маску ввода для оптимизации сбора телефонных номеров в формах на сайте: кейсы агентства Netpeak...
02 05 2026 1:29:45
Создание успешного стартапа в нише телемедицины. Без дополнительных трат увеличил за 6 месяцев доход на 1983%, а клиентскую базу — более чем на 1000%....
01 05 2026 4:22:35
Три способа парсинга данных с помощью Owox BI Pipeline, Mix Data BI Import, Owox BI Power Upload....
30 04 2026 16:46:15
Краткая инструкция для новичков. Структура сайта, внутренняя перелинковка, юзабилити, контент, оптимизация тегов и заголовков, HTTPS, скорость загрузки сайта, mobile friendly и другие. Узнать больше!...
29 04 2026 10:21:35
Примеры странной, классной и непонятной рекламы в соцсетях из моей ленты за февраль 2021 года...
28 04 2026 0:15:30
В аккаунте ***ytics появилась возможность подключения ремаркетинга в поисковой сети Google. Расскажем о результатах применения инструмента на примере кейса крупного проекта ecommerce....
27 04 2026 2:20:19
Что такое контекстная реклама? Настраиваем рекламу в поиске Google...
26 04 2026 5:52:52
Решили написать про новый формат рекламы — баннерный...
25 04 2026 7:22:36
Многие не догадываются о том, что в КМС Google можно разместить и редактировать графические объявления онлайн...
24 04 2026 7:28:40
Низкочастотные, низкоконкурентные, Long Tail и другие термины, которые нужно знать и понимать....
23 04 2026 13:23:42
Gif для стрима. Пост пятничного веселья — гифки о буднях специалистов по контекстной рекламе....
22 04 2026 0:40:47
Решение вопроса о получении корректной информации о конверсиях — вполне посильная задача...
21 04 2026 17:41:43
Нейронные сети, нейросети онлайн, сверхточные нейронные сети. Я рассажу, как они устроены, как написать свою нейронную сеть с нуля, как правильно обучить нейронную сеть на имеющихся данных...
20 04 2026 3:27:52
Языковой закон требует, чтобы общение бизнеса с клиентами шло на украинском языке, если нет просьбы о другом приемлемом варианте. Что это означает для РРС, читайте дальше....
19 04 2026 20:41:47
Руководство для всех, кто хочет продать что-то через интернет...
18 04 2026 4:46:22
Хотите качественно руководить рекламной кампанией в Facebook? Как подключиться к API Facebook и получение статистики в R — рассказывает Алексей Селезнев....
17 04 2026 2:39:54
Анализируя поведение аудитории, вы сможете понять, почему клиенты приходят на сайт, почему уходят, и почему не делают заказы....
16 04 2026 3:41:35
Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::