AI w finansach: automatyzacja obiegu dokumentów — Transcript

Automatyzacja obiegu faktur w Google Workspace z użyciem Google Apps Script i AI Gemini bez programowania.

Key Takeaways

  • Automatyzacja faktur eliminuje ręczne przepisywanie danych i oszczędza czas.
  • Google Apps Script jest darmowym i łatwo dostępnym narzędziem do automatyzacji w ekosystemie Google.
  • AI Gemini umożliwia automatyczne parsowanie danych z faktur, ale jest opcjonalne.
  • Poprawne nazewnictwo kolumn w arkuszu jest kluczowe dla stabilności skryptu.
  • Oznaczanie przetworzonych maili etykietą zapobiega wielokrotnemu przetwarzaniu tych samych dokumentów.

Summary

  • Prezentacja automatyzacji procesu obsługi faktur przychodzących mailem w firmie.
  • Wykorzystanie Google Apps Script do automatycznego pobierania załączników PDF z Gmaila i zapisywania ich na Dysku Google.
  • Integracja z AI Gemini do automatycznego odczytu i parsowania danych z faktur oraz wpisywania ich do arkusza Google Sheets.
  • Omówienie struktury arkusza i zasad nazewnictwa kolumn dla poprawnej pracy skryptu.
  • Skrypt oznacza przetworzone maile etykietą, aby uniknąć duplikacji danych.
  • Prezentacja funkcji testowej do przetworzenia pojedynczego maila przed uruchomieniem pełnej automatyzacji.
  • Instrukcja dodawania klucza API do Gemini w ustawieniach projektu bez umieszczania go bezpośrednio w kodzie.
  • Możliwość pominięcia integracji z AI Gemini ze względu na politykę prywatności danych, zachowując podstawową automatyzację.
  • Wyjaśnienie problemów z wersją modelu AI i jak je ręcznie poprawić w kodzie.
  • Pokazanie, jak wgrać i uruchomić skrypt w edytorze Google Apps Script dostępnego w Google Sheets.

Full Transcript — Download SRT & Markdown

00:07
Speaker A
Cześć, mam do was pytanie. Ilu z was ma albo miało w firmie taki proces?
00:24
Speaker A
Przychodzi faktura mailem, ktoś ją pobiera, otwiera Excela albo Sheets, ręcznie przepisuje: dostawca, numer, kwota, data i to samo robi z każdą kolejną fakturą przez cały miesiąc.
00:34
Speaker A
To jest jeden z najbardziej typowych przykładów pracy, która nie powinna już być robiona ręcznie i dzisiaj to naprawimy.
00:42
Speaker A
Razem, bez zatrudniania programistów, bez kupowania drogiego oprogramowania.
00:50
Speaker A
Ale zanim zaczniemy budować, jedno zdanie o tym, czym w ogóle jest to narzędzie, którego będziemy używać.
00:56
Speaker A
Jest to Google Apps Script.
01:02
Speaker A
To wbudowany silnik automatyzacji w ekosystemie Google, darmowy, bez żadnych dodatkowych opłat, dostępny w każdym koncie Google lub Google Workspace.
01:11
Speaker A
Od konta prywatnego po firmowy Workspace. Możecie go sobie wyobrazić jako takie makra na sterydach.
01:23
Speaker A
Działa w tle, ma dostęp do waszej poczty, dysku, Sheets, kalendarza i może to wszystko ze sobą łączyć.
01:37
Speaker A
Nie trzeba nic instalować, wchodzi się przez menu w Google Sheets i pisze się tam kod, albo jak zobaczycie za chwilę, wkleja kod napisany przez Gemini.
01:46
Speaker A
My tego kodu nie będziemy pisać sami, poprosimy o to AI. Więc zaczynamy. A oto co zbudujemy.
01:57
Speaker A
Mail z fakturą przychodzi na skrzynkę.
02:09
Speaker A
Skrypt w Google, który za chwilę Gemini nam napisze, wykrywa nową wiadomość z PDF-em, zapisuje załącznik na dysku, wysyła go do Gemini, żeby przeczytał fakturę i wyciągnął dane i wpisuje wszystko do arkusza.
02:22
Speaker A
Nie będziecie musieli dotykać tej faktury ręcznie. Arkusz zapełnia się sam. I mamy trzy narzędzia: Gmail, Google Drive, Google Sheets.
02:42
Speaker A
Wszystko w jednym ekosystemie, które prawdopodobnie już macie w pracy. Jedno małe zastrzeżenie. Zakładamy tu, że mamy już dedykowaną skrzynkę pod faktury.
02:48
Speaker A
Na przykład [email protected]. I na tę skrzynkę wpływają wszystkie faktury. Zanim napiszemy cokolwiek do Gemini, musimy przygotować arkusz.
03:02
Speaker A
I tu chcę wam powiedzieć jedną rzecz, która robi różnicę między skryptem, który działa, a skryptem, który się wysypuje.
03:18
Speaker A
Skrypt będzie szukał kolumn po ich nazwie, ale kod jest precyzyjny.
03:30
Speaker A
Spacja, wielka litera, nawias w środku nazwy. To wszystko może sprawić problem. Dlatego stosujemy prostą zasadę: małe litery i podkreślniki zamiast spacji.
03:39
Speaker A
Dlaczego? Bo dla maszyny między e-mail a podkreślnik e-mail to są dwie zupełnie różne rzeczy.
03:46
Speaker A
Jeśli nagłówek ma spację, nawiasy albo wielką literę, skrypt musi sobie z tym jakoś poradzić.
03:54
Speaker A
A to znaczy więcej miejsca na błąd. Podkreślnik i małe litery to standard w programowaniu, nie bez powodu.
04:05
Speaker A
Jest przewidywalny, nie wymaga żadnych tłumaczeń i działa tak samo w każdym języku programowania i każdym narzędziu.
04:13
Speaker A
Wpisuję więc nagłówki. 11 kolumn: timestamp, od e-mail, temat, link do pliku, dostawca, numer faktury, data wystawienia, kwota netto, kwota brutto, waluta i status. Wszystko małymi literami.
04:32
Speaker A
Spacje zastąpione są podkreślnikiem. Żadnych nawiasów. To samo powiemy Gemini w prompcie. Słowo w słowo i skrypt będzie wiedział dokładnie, gdzie wpisać każdą wartość.
04:41
Speaker A
Zaznaczam, pogrubiam i mogę zamrozić górny wiersz lub kliknąć filtr, żeby przy przewijaniu zawsze było widać, co jest w której kolumnie.
04:55
Speaker A
Teraz najważniejszy moment tej lekcji. Nie będę otwierał dokumentacji Google Apps Script, nie będę szukał tutoriali.
05:03
Speaker A
Opiszę problem jak do asystenta i Gemini napisze mi kod. Patrzcie teraz na to, co przygotowałem.
05:09
Speaker A
"Napisz mi skrypt do Google Apps Script. Skrypt ma sprawdzać tę skrzynkę i dla każdego nowego maila z załącznikiem PDF zapisać załącznik w folderze na moim Google Drive.
05:21
Speaker A
Folder nazywa się Faktury. Jeśli go nie ma, stwórz. Dopisać nowy wiersz do mojego arkusza Google Sheets.
05:34
Speaker A
3. Spróbować odczytać fakturę przy pomocy Gemini API." Zaznaczam Gemini 2.5 Flash. "I wyciągnąć z niej dane."
05:41
Speaker A
Ważne, żeby skrypt nie przetwarzał tego samego maila dwa razy, niech po przetworzeniu dodaje do niego etykietę "przetworzone w Gmailu".
05:56
Speaker A
Przy każdym uruchomieniu skrypt ma szukać tylko maili bez tej etykiety i tylko z ostatnich 30 dni. Mój arkusz ma dokładnie takie nagłówki w pierwszym wierszu.
06:07
Speaker A
"Użyj tych samych nazw, nic nie zmieniaj." I tu podaję wszystkie moje nagłówki. "W kolumnie Status wpisz zawsze Nowe przy dodawaniu wiersza.
06:15
Speaker A
W kolumnie Timestamp wpisz datę i godzinę uruchomienia skryptu. Klucz API do Gemini chcę podać osobno w ustawieniach projektu.
06:25
Speaker A
Nie wpisuj go w kodzie. Niech skrypt pobiera go przez PropertiesService. Napisz mi kompletny, gotowy skrypt.
06:34
Speaker A
Dodaj też prostą funkcję testową 'testujJedenMail', która przetworzy tylko jeden najnowszy mail z załącznikiem PDF. Tak, żebym mógł sprawdzić, czy skrypt działa, zanim uruchomię go na całej skrzynce.
06:45
Speaker A
Funkcja testowa powinna też dodawać etykietę 'przetworzona'." I zanim przejdziemy dalej, jedna ważna uwaga.
06:52
Speaker A
Część z was może się zastanawiać, czy chcę, żeby model AI czytał moje faktury.
07:07
Speaker A
I to jest uzasadnione pytanie. Jeśli wasza firma ma politykę danych, która to wyklucza, albo po prostu nie czujecie się z tym komfortowo, w porządku.
07:24
Speaker A
Część z promptem o Gemini API możecie po prostu pominąć. Skrypt nadal zapisze załączniki na dysku i doda wiersz do arkusza z nadawcą, tematem i linkiem do pliku.
07:36
Speaker A
Kolumny z danymi faktury zostaną puste, wypełniacie je sami.
08:00
Speaker A
To nadal jest duża oszczędność czasu w porównaniu z ręcznym pobieraniem i szukaniem pliku. Gemini daje wam automatyczne parsowanie danych, ale jest opcjonalny, automatyzacja działa bez niego.
08:09
Speaker A
Zwróćcie uwagę na jedną ważną rzecz w tym prompcie. Napisałem: po przetworzeniu dodaję etykietę 'przetworzone'.
08:26
Speaker A
To jest kluczowe, bo bez tego skrypt przy każdym uruchomieniu zaczynałby od początku i ta sama faktura trafiałaby do arkusza 10 razy dziennie.
08:38
Speaker A
Etykieta w Gmailu to jest właśnie nasza pamięć. Skrypt pamięta, co już obsłużył. I poprosiłem też o funkcję testową "testujJedenMail".
08:46
Speaker A
Nie "przetwórz wszystko", tylko "jeden". Najnowszy mail z PDF-em. Dzięki temu mogę sprawdzić, czy w ogóle działa, zanim puszczę go na całą skrzynkę.
08:54
Speaker A
I tak mamy cały skrypt. Za chwilę go wkleimy. Ale jeszcze przed tym szybki check.
09:14
Speaker A
Szukam bowiem trzech rzeczy. Po pierwsze, czy w skrypcie widzę moje nagłówki. Widzę od razu pierwszym rzutem oka, że pojawiają się nagłówki, tak jak o to poprosiłem.
09:36
Speaker A
Sprawdzam też, czy w skrypcie podane jest Properties. Mogę kliknąć Command albo Ctrl+F. Widzę, że Properties jest też uwzględnione w naszym skrypcie i gdzie klucz do naszego API nie będzie zaszyty w kodzie.
09:47
Speaker A
I ostatnie, czy widzę coś o etykiecie "przetworzone". I mogę tu również wpisać "przetworzone". Jest. Mamy etykietę "przetworzone".
10:12
Speaker A
Ale tym samym pojawił się tu mały błąd. Zauważcie, że mimo że poprosiłem model, aby wykorzystał wersję 2.5, model mówi mi, że ten model jeszcze nie istnieje i usilnie dodaje nam Gemini 1.5 Flash. Z czego to wynika?
10:28
Speaker A
Wynika to z tego, że modele trenowane były w 2025 roku, kiedy najnowszych modeli jeszcze nie było.
10:45
Speaker A
Stąd niestety takie rzeczy musimy czasem poprawić manualnie. Ale nie bójcie się, wystarczy poszukać, gdzie w kodzie podany jest Gemini 1.5 i zastąpić go właściwym.
10:59
Speaker A
Zrobimy to zaraz. Wracamy do arkusza. Klikam górne menu Extensions lub Rozszerzenia. Klikam Apps Script.
11:15
Speaker A
To jest właśnie Google Apps Script, edytor kodu bezpośrednio w przeglądarce. Dostępny dla każdego, kto ma konto Google.
11:27
Speaker A
Zaznaczam więc domyślny kod, który tam jest. Usuwam go w całości. Wklejam wygenerowany przez nas kod.
11:42
Speaker A
I poprawiam ostatnią jedną rzecz. A następnie klikam Save lub Ctrl+S. I teraz pora na klucz API.
12:04
Speaker A
Nie wpisujemy go nigdy w kodzie, bo kod można przypadkowo udostępnić, skopiować, ktoś może podejrzeć ekran.
12:14
Speaker A
W lewym panelu klikamy ikonę koła zębatego. Przewijamy w dół i widzimy Add Script Property, czyli właściwości skryptu. Klikamy Dodaj właściwość i wpisujemy Gemini API Key i następnie podajemy wartość.
12:36
Speaker A
Tutaj wklejamy swój klucz. Gdzie znaleźć nasz klucz? Wystarczy, że wyjdziemy do Google AI Studio i klikniemy API Keys.
12:44
Speaker A
Ja już mam przygotowany projekt. Wystarczy, że skopiuję ten klucz. Natomiast jeśli nie macie, wystarczy, że klikniecie Create API Key, wybierzecie projekt lub stworzycie nowy i od razu możecie pobrać klucz.
13:00
Speaker A
Nie będzie się duplikował. I nasza faktura jest na dysku. Możemy kliknąć i podejrzeć. Ponadto dane są w arkuszu, mail jest oznaczony.
13:18
Speaker A
Widzicie, że nikt nie przepisywał tego ręcznie. Nikt ręcznie nie otwierał PDF-a. Skrypt zrobił to za nas w kilka sekund.
13:26
Speaker A
A teraz wyobraźcie sobie, że macie 50 takich faktur miesięcznie albo dwieście. I skrypt nie będzie zwalniał, nie pominie ich, nie będzie robił pewnie też literówek w adresatach.
13:42
Speaker A
Ale zanim ustawimy tak zwany trigger, czyli wyzwalacz, tak żeby skrypt się sam wykonywał, jedno pytanie, które często pada, widząc nasz Google Apps Script, czy trzeba wdrożyć skrypt? Jest tutaj przycisk Deploy.
13:57
Speaker A
Służy do publikowania skryptu jako aplikacji webowej dostępnej z zewnątrz. My tego nie potrzebujemy. Nasz skrypt działa wewnętrznie na naszym koncie Google.
14:07
Speaker A
Dlatego w ustawieniach triggera zaraz zobaczycie pole Choose which deployment should run z opcją Head i tu nic nie będziemy zmieniać.
14:15
Speaker A
Head po prostu oznacza Uruchom aktualną zapisaną wersję skryptu. I to jest dokładnie to, czego chcemy.
14:23
Speaker A
Klikam więc po lewej stronie ikonę zegara w lewym panelu. To są triggery, albo inaczej wyzwalacze.
14:34
Speaker A
I klikam Add Trigger. Wiem, że formularz wygląda trochę przytłaczająco. Są tu cztery pola, ale nie obawiajcie się.
14:43
Speaker A
Przejdziemy przez nie po kolei. Pole pierwsze to Wybierz funkcję. Zostawiamy tą, która jest główna. Wybieramy "Przetwórz nowe faktury".
14:55
Speaker A
To jest ta główna funkcja, już nie testowa. Pole drugie to wspomniany Deployment. Nie przejmujcie się tym, zostawcie tak jak jest.
15:06
Speaker A
Tak jak mówiłem, to znaczy Uruchom bieżącą wersję. Pole trzecie Select event source. I tu ważna zmiana. Domyślnie prawdopodobnie będzie tam Spreadsheet albo arkusz. To znaczy uruchom, gdy ktoś otworzy arkusz. Oczywiście tego nie chcemy.
15:22
Speaker A
Chcemy, aby skrypt działał w tle. Więc zmieniamy na Time-driven. Czyli Uruchamiaj według harmonogramu. Po wybraniu Time-driven pojawia się dodatkowe pole Typ timera.
15:36
Speaker A
Tu wybieramy Day timer, czyli raz dziennie i ustalam godzinę na przykład między 8 a 9 rano.
15:43
Speaker A
Skrypt odpali się każdego dnia rano i sprawdzi, czy w nocy przyszły jakieś faktury. Raz dziennie spokojnie wystarczy.
15:51
Speaker A
Faktury nie wymagają reakcji w ciągu minut, a rzadsze uruchomienia to mniejsze zużycie limitów. Po prawej stronie widzicie jeszcze Failure notification settings.
16:02
Speaker A
Zostawiam Notify me daily. To znaczy, że jeśli skrypt się wysypie, będzie jakiś błąd, dostaniecie o tym maila. To jest taki wasz monitoring, żebyście nie musieli sami sprawdzać, czy działa.
16:13
Speaker A
I klikam Zapisz. Teraz krótkie wyjaśnienie, skąd skrypt wie, co już przetworzył. Każde uruchomienie skryptu wysyła do Gmaila zapytanie: Hej, pokaż mi maile z PDF-em bez etykiety "przetworzone" z ostatnich 30 dni.
16:33
Speaker A
Następnie je przetwarza, dodaje etykietę i kończy. Jutro pyta znowu i dostaje tylko nowe maile, które przyszły w nocy.
16:43
Speaker A
Zero duplikatów. Jest jeszcze jedna rzecz przed pierwszym uruchomieniem funkcji głównej. Jeśli macie skrzynkę z latami historii i setkami starych faktur, skrypt za pierwszym razem przetworzy wszystkie z ostatnich 30 dni.
16:58
Speaker A
Dlatego w prompcie dodałem "ostatnie 30 dni". Ale jeśli chcecie zacząć od czystej karty, wejdźcie do Gmaila, zaznaczcie stare maile na tej skrzynce i ręcznie nadajcie im etykietę przetworzone.
17:12
Speaker A
W ten sposób skrypt uzna je za obsłużone i od tej pory będzie przetwarzał tylko nowe.
17:19
Speaker A
Tak więc od jutra rano Google sam sprawdzi skrzynkę. Nowa faktura będzie zapisana na dysku, wpisana w arkusz i oznaczona etykietą. Bez waszego udziału.
17:31
Speaker A
I teraz jedno szczere i uczciwe słowo na koniec. Gemini i inne modele językowe czytają faktury bardzo dobrze, ale nie idealnie. Jeśli faktura jest skanem z kiepską jakością albo ma niestandardowy układ, może coś źle wyciągnąć albo zostawić pustą komórkę.
17:49
Speaker A
Dlatego mamy kolumnę Status. Domyślnie wpisuje Nowe. Możecie raz dziennie przejrzeć arkusz, rzucić okiem i zmienić na Zaakceptowane po szybkiej weryfikacji. To jest wasz proces, wasza kontrola.
18:03
Speaker A
AI robi 90% pracy, ale to my jako ludzie zatwierdzamy wynik. A co jeśli skrypt coś źle robi albo zwraca nam błąd?
18:14
Speaker A
Nie panikujcie. Prawdopodobnie tak będzie. Wklejcie błąd z powrotem do Gemini i napiszcie: "Dostałem taki błąd, popraw mi skrypt." Jedna, dwie rundy i na pewno zadziała.
18:28
Speaker A
Podsumujmy więc, co dzisiaj zrobiliśmy. Opisaliśmy problem po polsku. Bez kodu, bez dokumentacji. Dostaliśmy skrypt od Gemini.
18:37
Speaker A
Wkleiliśmy go do Apps Script. Schowaliśmy nasz klucz API, aby był bezpieczny, ustawiliśmy automatyczny trigger.
18:45
Speaker A
I w ten sposób mamy całkiem działający obieg faktur w Google. Za darmo. W ciągu jednej lekcji.
18:53
Speaker A
Spójrzcie, że nie potrzebowaliście wiedzy o programowaniu. To, co potrzebowaliście, to wiedzieć, co chcecie osiągnąć i jak precyzyjnie to napisać.
19:04
Speaker A
Nazywamy swoje kolumny w sposób, który rozumie maszyna. Prosimy o funkcję testową, zanim puścimy całość.
19:10
Speaker A
Pytamy o etykietę, żeby skrypt nie przetwarzał tego samego dwa razy. To jest właśnie ta warstwa umiejętności, nie kodowanie, ale myślenie jak ktoś, kto rozumie, jak działa automatyzacja i kto wie, co chce osiągnąć. Więc zalogujcie się dziś do swojego arkusza, stwórzcie folder Faktury
19:28
Speaker A
na dysku, napiszcie ten prompt do Gemini, sprawdźcie, czy działa. Jeśli nie, poproście, aby poprawił.
19:36
Speaker A
Dzięki i do zobaczenia w kolejnej lekcji.
Topics:automatyzacjaGoogle Apps ScriptfakturyGoogle SheetsGoogle DriveGmailAI Geminiparsowanie fakturskrypt Googleprocesy biznesowe

Frequently Asked Questions

Czy skrypt wymaga programowania, aby go używać?

Nie, skrypt jest generowany przez AI Gemini na podstawie opisu problemu, więc użytkownik nie musi sam pisać kodu.

Czy można używać tego rozwiązania bez wysyłania faktur do AI Gemini?

Tak, integracja z AI Gemini jest opcjonalna. Skrypt nadal zapisze załączniki i doda podstawowe dane do arkusza, co i tak znacznie usprawnia pracę.

Jak skrypt unika wielokrotnego przetwarzania tych samych maili?

Skrypt dodaje do przetworzonych maili w Gmailu specjalną etykietę 'przetworzone', dzięki czemu przy kolejnych uruchomieniach pomija już obsłużone wiadomości.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →