При использовании Google Apps Script (GAS) в качестве обработчика вебхуков часто возникают задержки и таймауты. Это приводит к тому, что система разрывает соединение по таймауту, а скрипт либо не успевает отработать, либо создает дублирующие данные при повторных попытках.
Основные причины задержек:
«Холодный старт»: Если скрипт не вызывался 5–10 минут, Google выгружает его из кеша. Первый запуск после паузы всегда значительно медленнее.
Медленный SSL-хендшейк: При установке нового соединения GAS может отвечать с задержкой в несколько секунд.
Решение Использование прокси-сервиса
Наиболее стабильный способ — разместить между вашей системой и Google Script «прокладку» на базе Cloudflare Workers или Yandex Cloud Functions. Это позволяет возвращать ответ отправителю мгновенно (1–2 сек) и стабильно обрабатывать данные.
Вариант 1: Cloudflare Workers
Cloudflare лучше обрабатывает редиректы Google и обеспечивает минимальные задержки.
Инструкция:
1) Создаем проект в Google Workspace:
2) Вставляем пример кода (template.GAS):
3) Разворачиваем веб-приложение:
И сохраняем полученную ссылку:
4) Далее переходим на https://workers.cloudflare.com и создаем приложение:
Деплоим приложение:
5) Затем переходим в приложение и редактируем код.
Необходимо вставить содержание файла сf.txt в const response = await fetch('') необходимо вставить ссылку которую скопировали из 3 шага:
6) Далее создаем правило для запросов. Ссылку берем тут:
Пример для POST:
Пример для GET:
Вариант 2: Yandex Cloud Functions
Подходит как альтернатива, но имеет особенность: из-за специфики Node.js и обработки редиректов /exec, POST-запросы иногда могут приходить в GAS как GET.
Инструкция:
1) Создаем проект в Google Workspace:
2) Вставляем пример кода (template.GAS):
3) Разворачиваем веб-приложение:
И сохраняем полученную ссылку:
4) Переходим в консоль Яндекс.Облако Functions и создаем функцию:
5) Выбираем node.js и вставляем код из yandex.txt, также необходимо заменить в const gasResponse = await fetch ('') ссылку которую получали из 3 шага:
И выбираем или создаем сервисный аккаунт с functions.functionInvoker:
После сохраняем изменения и создаем правила в HelpDeskEddy. Ссылку берем отсюда:
Пример с POST:
Пример с GET:
Итоги и проверка
Как проверить: Используйте Postman или логи системы. При использовании прокси время ответа должно стабилизироваться в диапазоне 1–2 секунды даже при «холодном старте».
Важно: При использовании Cloudflare Workers или Яндекс.Функций убедитесь, что вы передаете все необходимые заголовки (Headers) и тело запроса (Body) без изменений.