Trzy sposoby na odpowiedzi z Formularzy Google w Telegramie
- Apps Script (za darmo, trochę kodu). Skrypt przypięty do formularza wysyła każdą odpowiedź do Twojego bota. Ten artykuł pokazuje go krok po kroku.
- Automatyzacja bez kodu. Zapier, Make i IFTTT mają gotowy szablon „Google Forms → Telegram”. Konfiguracja jest szybka, ale każda usługa ma własne limity planów.
- Formularz na Twojej stronie. Jeśli formularz jest na Twojej stronie, a nie w Formularzach Google, backend formularzy może wysyłać zgłoszenia na Telegram bez skryptu. Więcej na końcu.
Żeby było jasne: Formgong nie łączy się z Formularzami Google. Przyjmuje tylko formularze, które wysyłają do niego dane z Twoich własnych stron.
Krok 1: utwórz bota i znajdź chat id
- W Telegramie otwórz @BotFather, wyślij
/newboti przejdź przez kroki. Skopiuj token, który dostaniesz. Traktuj go jak hasło. - Otwórz nowego bota i naciśnij Start albo wyślij mu dowolną wiadomość. Bot nie może napisać do Ciebie pierwszy.
- W przypadku grupy dodaj do niej bota i wyślij tam wiadomość.
- Otwórz w przeglądarce
https://api.telegram.org/bot<token>/getUpdates. Znajdź w odpowiedzi"chat":{"id":…}. Ta liczba to Twój chat id. Id grup zaczynają się od minusa.
Boty, chat id i grupy opisuje dokładniej poradnik o bocie Telegram dla formularza kontaktowego.
Krok 2: dodaj skrypt do formularza
Nazwy opcji podajemy tak, jak w angielskim interfejsie Google.
- Otwórz formularz w trybie edycji. Z menu ⋮ wybierz Apps Script. Powstanie skrypt przypięty do formularza.
- Usuń przykładowy kod, wklej skrypt poniżej i zapisz.
- Otwórz Project Settings (ikona koła zębatego). W sekcji Script properties dodaj
TELEGRAM_TOKENiTELEGRAM_CHAT_ID. Dzięki temu token nie trafia do kodu.
Skrypt czyta wszystkie odpowiedzi, zapisuje każdą w osobnej linii jako „Pytanie: odpowiedź” i wysyła jedną wiadomość tekstową. Telegram przyjmuje od 1 do 4096 znaków na wiadomość, więc dłuższy tekst skrypt przycina. Zwykły tekst sprawia też, że odpowiedzi nie zepsują formatowania.
// Formularz Google → menu ⋮ → Apps Script. Wklej, zapisz i raz uruchom createTrigger.
// Project Settings → Script properties: TELEGRAM_TOKEN i TELEGRAM_CHAT_ID.
function createTrigger() {
ScriptApp.newTrigger("sendToTelegram")
.forForm(FormApp.getActiveForm())
.onFormSubmit()
.create();
}
function sendToTelegram(e) {
const props = PropertiesService.getScriptProperties();
const token = props.getProperty("TELEGRAM_TOKEN");
const chatId = props.getProperty("TELEGRAM_CHAT_ID");
const lines = e.response.getItemResponses().map((item) => {
const answer = item.getResponse();
const value = Array.isArray(answer) ? answer.join(", ") : String(answer);
return item.getItem().getTitle() + ": " + value;
});
const text = ("Nowa odpowiedź z formularza\n\n" + lines.join("\n")).slice(0, 4096);
const res = UrlFetchApp.fetch("https://api.telegram.org/bot" + token + "/sendMessage", {
method: "post",
contentType: "application/json",
payload: JSON.stringify({ chat_id: chatId, text: text }),
muteHttpExceptions: true,
});
if (res.getResponseCode() !== 200) console.error(res.getContentText());
}Krok 3: włącz wyzwalacz
Skrypt działa tylko wtedy, gdy wywoła go instalowalny wyzwalacz przesłania formularza. Dodasz go na dwa sposoby:
- W edytorze wybierz
createTriggeri raz kliknij Run. Google poprosi o autoryzację skryptu. Zezwól. - Albo otwórz Triggers (ikona zegara), kliknij Add Trigger, wybierz
sendToTelegram, źródło zdarzenia From form i typ zdarzenia On form submit.
Użyj jednego sposobu, nie obu, bo każda odpowiedź przyjdzie dwa razy. Potem wyślij testową odpowiedź przez publiczny link formularza. Nie uruchamiaj sendToTelegram z edytora: nie ma wtedy odpowiedzi do odczytania i kończy się błędem.
Limity i częste problemy
- Limity. Prywatne konta Google mają 20 000 wywołań URL Fetch i 90 minut działania wyzwalaczy dziennie, konta Workspace 100 000 wywołań i 6 godzin. Jedna odpowiedź to jedno wywołanie.
- Odpowiedzi utworzone przez skrypty się nie liczą. Google pisze, że
FormResponse.submit()w innym skrypcie nie uruchamia wyzwalacza. - Przesyłanie plików. Odpowiedzi na pytanie z plikiem to identyfikatory plików na Dysku, nie same pliki.
- Nic nie przychodzi. Otwórz Executions w Apps Script. Błąd
chat not foundoznacza zły chat id albo brak kliknięcia Start w bocie. - Zmiana właściciela. Wyzwalacz działa jako osoba, która go utworzyła. Jeśli straci dostęp do formularza, utwórz go ponownie.
Gdy formularz jest na Twojej stronie
Formularze Google sprawdzają się w ankietach i zapisach. Przy formularzu kontaktowym na własnej stronie możesz pominąć i Google, i skrypt. Formularz HTML wysyłający dane do backendu formularzy może przekazywać każdą wiadomość prosto na Telegram i e-mail.
Formgong robi to w każdym planie, także darmowym: 300 zgłoszeń miesięcznie i przechowywanie danych w UE. Telegram podłączasz w panelu, więc nie trzeba kopiować tokenu ani chat id. Kroki opisuje artykuł jak wysyłać zgłoszenia z formularza na Telegram.
Pytania i odpowiedzi
Czy mogę wysyłać odpowiedzi z Formularzy Google na Telegram bez kodu?
Tak. Zapier, Make i IFTTT mają gotowe szablony Google Forms → Telegram. Zanim na nich polegasz, sprawdź limity planu każdej usługi.
Czy metoda z Apps Script jest darmowa?
Tak, w ramach dziennych limitów Google. Konto prywatne może wykonać 20 000 wywołań URL Fetch dziennie (stan na 05.10.2026), a każda odpowiedź zużywa jedno.
Dlaczego mój skrypt nic nie wysyła?
Zwykle brakuje wyzwalacza lub nie jest autoryzowany, chat id jest zły albo nie kliknięto Start w bocie. Strona Executions w Apps Script pokaże błąd.
Czy Formgong działa z Formularzami Google?
Nie. Formgong przyjmuje formularze z Twojej własnej strony, które wysyłają do niego dane. Nie potrafi czytać odpowiedzi z Formularzy Google.
Źródła i dokumentacja
Oficjalne materiały pomocnicze: Apps Script: Installable triggers, Apps Script: Event objects (form submit), Apps Script: Quotas, Apps Script: Properties service, Telegram Bot API, Zapier: Google Forms and Telegram, Make: Google Forms and Telegram, IFTTT: Google Forms and Telegram. Dokumentacja Formgong, Przechowywanie danych.
Artykuł w formacie MarkdownPrzeczytaj także
- Formularz w Lovable: od przycisku do prawdziwego zgłoszenia
- Formularz HTML na statycznej stronie, bez własnego serwera
- Zgłoszenia ze strony w Telegramie: czat prywatny lub grupa
- Formularz pokazuje sukces, ale email nie dociera — co sprawdzić
- Leady ze strony w Telegramie: statusy i przypomnienia zamiast CRM
- Backend dla formularzy z Lovable, Bolt, v0 i Cursor
- Bot Telegram do formularza: pisać własnego?
- Backend formularzy a RODO: 7 kryteriów wyboru
- Formularz mailto czy backend formularzy?
- Formularz HTML do Google Sheets: 2 sposoby
- Limit formularzy Webflow: co zrobić po 50
- Turnstile, reCAPTCHA czy hCaptcha do formularza
- Contact Form 7 i Elementor do Telegrama
- Formularz Squarespace nie wysyła maili?
- Formularz kontaktowy Shopify: gdzie trafia?
- Formularz Wix nie wysyła maili? Rozwiązania
- Alternatywy Formspree z danymi w UE / RODO
- Formularz kontaktowy, który nic nie wysyła: test 793 stron