Trudne rozwiązania prostych problemów z pomocą N8N i AI

Dla mieszkańców Juszowic – kalendarz w formie udostępnionego kalendarza Google (link) oraz pliku iCal do importu w dowolnej aplikacji.

Co roku dostajemy z gminy rozpiskę wywozu śmieci na kolejne 12 miesięcy. Aby nie zapomnieć wystawić pojemników dodajemy wszystkie terminy do kalendarza Google. Mówimy tu o około stu pozycjach, które trzeba przepisać do kalendarza z papierowej ulotki. I co roku ochotnikiem do tego zadania była moja żona.

Tym razem ochotnikiem zostałem ja i postanowiłem to zautomatyzować. W końcu po coś ten kurs N8N nagrałem, na pewno nie po to aby ręcznie to dodawać.

Etap 1 – zamieniamy wodę w wino… to znaczy kolorowy PDF w nudną tabelę

Gmina wysyła nam takie coś:

Piękne, nieprawdaż? Toż to jakiś wulkan intelektu ten format wymyślił, żeby ludzi gnębić. Ale od czego mamy Ai? Wrzucamy dokument do pierwszego lepszego modelu potrafiącego czytać obrazki (ja użyłem Perplexity) i prosimy grzecznie:

mam tu dokument z harmonogramem wywozu śmieci, chcę z niego wydobyć tabelę z 2 kolumnami – rodzaj śmieci, data, przy czym data musi być o jeden dzień wcześniej niż na dokumencie, czyli jeśli 23 stycznia jest wywożony papier to chcę w tabeli mieć tę informację na 22 stycznia. Dodatkowo chcę aby w jednym wierszu był tylko jeden rodzaj śmieci i jedna data. Aha i zamiast Odpady bio jednorodzinne wpisz Bio a zamiast Odpady zmieszane jednorodzinne wpisz Zmieszane.

Po chwili uzyskałem tabelę danych, którą przeniosłem do Google Sheets. Tam musiałem jeszcze zmienić format daty, na taki który lubi Google Calendar API (YYY-MM-DD), więc finalnie wyglądało to jak niżej.

Po chwili namysłu i paru testach z N8N dodałem jeszcze 3 kolumny i na koniec procesu – już po zaimportowaniu – arkusz wygląda tak. Natomiast przed importem kolumna „dodane?” miała wszędzie zera a kolumny D i E były puste.

Etap 2 – konfigurujemy dostęp z N8N do usług Google

To akurat chyba najtrudniejsza część procesu, jako że trzeba zarejestrować sobie konto na Google Cloud, utworzyć projekt, dodać consent screen, kilka rodzajów API, poustawiać różne tajemnicze Oauthowe rzeczy i tak dalej. Na szczęście jest bardzo dobra dokumentacja na tę okazję i warto bardzo dokładnie wykonać wszystkie kroki, żeby to poprawnie działało.

Etap 3 – budujemy przepływ

Skoro mamy już dane i dostęp do nich z poziomu N8N to wystarczy tylko sklecić kilka kroków, zapętlić, potestować i stajemy się posiadaczem rozwiązania które:

  • odczyta z arkusza pierwszy wiersz oznaczony jako niedodany,
  • zapisze termin w kalendarzu
  • zapisze w arkuszu id i link do wydarzenia a także oznaczy dany termin jako dodany,
  • odczeka 5 sekund zanim zrobi to z kolejnym wierszem (Google nie lubi jak za często pytamy API)
  • zabierze się za kolejny rekord

Czyli coś w rodzaju:

Wiem, nie jest to najlepszy sposób – lepiej byłoby pobrać dane na raz i potem iterować je w pętli, ale N8N zniechęcił mnie do takiej metody dziwnym błędem, którego nie chciało mi się rozwiązywa, więc zmieniłem podejście na bardziej łopatologiczne (dzięki czemu musiałem dodać tam węzeł Wait).

Definicja procesu (jeśli kogoś interesuje) jest tu: SmieciRozpiska

Na koniec możemy już zapuścić maszynkę i obserwować jak terminy same się dodają do kalendarza. Proste, prawda? Może i zajęło mi to pół godziny, ale przynajmniej była to kreatywna robota, która oszczędzi nam w skali 30 lat jakieś dwie doby!

Po więcej takich porad w przyszłości zapisz się na powiadomienia!

Nie przegap nowych wpisów

Zapisz się na powiadomienia. Otrzymasz 1 mail w miesiącu.

klikając "Zapisz mnie" potwierdzasz zapoznanie się z polityką prywatności tego bloga. Po zapisaniu się możesz zmienić obserwowane kategorie.

Nie przegap nowych wpisów

Zapisz się na powiadomienia. Otrzymasz 1 mail w miesiącu.

klikając "Zapisz mnie" potwierdzasz zapoznanie się z polityką prywatności tego bloga. Po zapisaniu się możesz zmienić obserwowane kategorie.

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *