Wdrożenie CRM w firmie B2B bardzo rzadko musi wiązać się z rachunkiem licencyjnym za Salesforce czy HubSpot. Dla zespołów do 15 osób Google Sheets + Apps Script to rozwiązanie, które obsłuży pipeline sprzedaży, automatyczne follow-upy i audit trail – za $0/miesiąc.
Struktura arkusza CRM: co i gdzie
Zanim zaczniesz pisać skrypty, potrzebujesz poprawnie zaprojektowanej struktury. Minimalna architektura Sheets CRM to trzy zakładki:
| Zakładka | Zawartość | Kluczowe kolumny |
|---|---|---|
| Leady CRM | Aktywne szanse sprzedaży | Firma, Email, Status, Handlowiec, Wartość, Ostatnia aktywność, Wyślij follow-up (checkbox) |
| Historia | Audit trail zmian statusów | Data zmiany, Kto zmienił, Stary status, Nowy status, Lead ID |
| Konfiguracja | Parametry skryptów | Lista handlowców, Emaile powiadomień, Szablon follow-up |
Statusy w kolumnie „Status” powinny być listą walidowaną (Dane → Walidacja danych → Lista elementów): Nowy lead → Kontakt nawiązany → Oferta wysłana → Negocjacje → Zamknięty (Wygrana) → Zamknięty (Przegrana). Apps Script będzie reagował na zmianę konkretnej wartości w tej kolumnie.
Problem natywnych Arkuszy bez skryptów
Gdy zespół sprzedaży liczy 5 osób i wszystkie edytują jeden plik jednocześnie – przypadkowe nadpisanie komórki z kluczowym mailem to kwestia czasu. Brak historii zmian, brak blokady przydzielonych leadów, brak automatycznych przypomnień. To wymusza zakup licencji CRM.
Tutaj wkracza Google Apps Script (GAS) – środowisko JavaScript działające serwerowo, powiązane z Twoim kontem Google, reagujące na zdarzenia w arkuszu. Uruchamiane przez Googla, nie przez Twój komputer – działa 24/7 nawet gdy laptop jest zamknięty.
3 fazy automatyzacji CRM
- Automatyczny Lock: Gdy lead zostaje przydzielony handlowcowi (kolumna „Handlowiec” uzupełniona), skrypt blokuje wiersz przed edycją przez inne osoby. Koniec z „podebraniem bazy”.
- Trigger OnEdit: Zmiana statusu na „Oferta wysłana” automatycznie: zapisuje timestamp w „Ostatnia aktywność”, dodaje wpis do zakładki Historia, opcjonalnie wysyła powiadomienie mailowe do managera.
- Automatyczny Follow-Up: Checkbox w kolumnie 6 → Apps Script wysyła spersonalizowany e-mail przez
MailAppbez otwierania Gmaila. Handlowiec klika jedno pole, klient dostaje e-mail w 2 sekundy.
Kod: automatyczny e-mail po zmianie statusu
Funkcja poniżej reaguje na zaznaczenie checkboxa w kolumnie 6 (Wyślij follow-up) i wysyła spersonalizowany e-mail do klienta:
function onEdit(e) {
const sheet = e.source.getActiveSheet();
const range = e.range;
if (sheet.getName() === “Leady CRM” && range.getColumn() === 6 && e.value === “TRUE”) {
const row = range.getRow();
const email = sheet.getRange(row, 2).getValue();
const fname = sheet.getRange(row, 1).getValue();
const status = sheet.getRange(row, 4).getValue();
MailApp.sendEmail({
to: email,
subject: “Podsumowanie naszej rozmowy – “ + fname,
body: `Dzień dobry ${fname},\n\nDziękuję za rozmowę. Status Twojego projektu: ${status}.\nSkontaktuję się ponownie w ciągu 48h.\n\nPozdrawiam`
});
// Timestamp wysłania
sheet.getRange(row, 7).setValue(“Wysłano: “ + new Date().toLocaleString(“pl-PL”));
// Odznacz checkbox żeby nie wysyłać duplikatów
range.setValue(false);
}
}
Kiedy Sheets CRM przestaje wystarczać?
Sheets CRM ma konkretne ograniczenia. Warto je znać przed wdrożeniem:
| Sytuacja | Sheets CRM wystarczy? |
|---|---|
| Zespół 1–10 handlowców, <500 leadów miesięcznie | Tak – idealne rozwiązanie |
| Integracja z własnym systemem ERP przez API | Częściowo (Apps Script może wywołać REST API) |
| Zaawansowane raportowanie sprzedaży (pipeline, forecast) | Tylko z Data Studio jako warstwa wizualizacji |
| Zespół 15+ handlowców, >1000 leadów miesięcznie | Nie – czas na HubSpot lub Pipedrive |
| Ścisłe wymagania RODO (dane klientów zewnętrznych) | Tylko z odpowiednią konfiguracją IAM i RLS |
Apps Script zamienia Sheets w aplikację backendową – za $0 miesięcznie. Gdy pipeline sprzedaży przekracza 1000 leadów lub wymagania RODO stają się skomplikowane, rozważ migrację do dedykowanego CRM. Do tego momentu Sheets CRM + Apps Script to niezastąpione narzędzie dla rosnącego MŚP.