od Podstaw
3 godz. 47 min · Airtable · Biznes i Automatyzacje
Adam GospodarczykW kursie dowiesz się o najważniejszych funkcjach Airtable, stworzysz swoje pierwsze bazy a także opanujesz interfejs, widoki i inne podstawowe funkcje. Zobaczysz, jak wiele potrafi Airtable w porównaniu do Excela czy Google Sheets, a jednocześnie - jak proste i szybkie jest w codziennej pracy.
To niesamowite, jak wiele można osiągnąć wykorzystując prostą funkcję filtrowania danych w ramach widoku, której nie ma w arkuszach kalkulacyjnych. Możesz w ten sposób łatwo stworzyć ścieżki użytkowników, zawężać wyniki i przeglądać te, które na danym etapie pipeline'u są najbardziej istotne. W kursie nauczysz się pracować z widokami i zarządzać nimi w intuicyjny sposób. Wśród widoków dostępne są też kalendarze, wykresy Gantt'a, Galerie oraz bardzo przydatny widok Kanban, który pozwoli Ci zrezygnować z Trello.
Kolejną świetną opcją w Airtable są formularze, które pozwalają wypełniać Twój arkusz kalkulacyjny dowolnej osobie. To tak, jak Google Forms połączone z arkuszem Google Sheets, ale dużo prostsze i dające większe możliwości dopasowania do potrzeb użytkowników. Ponieważ formularze tworzysz w ramach widoku, pozwalają one łatwo zawęzić ilość pól do uzupełnienia na przykład do poszczególnych ról użytkowników. Możesz w ten sposób wypełniać CRM, zbierać dane, ankietować użytkowników i wiele więcej!
Prawdziwy potencjał Airtable drzemie w tym, że pod spodem jest to relacyjna baza danych, która automatycznie wystawia swoje własne API, dostępne pod konkretnym URL. Możesz korzystać z bardziej zaawansowanych funkcji, w tym automatyzacji np. z Zapier, które pozwolą Ci nadpisywać, odbierać i edytować dowolne dane. W kursie pokażemy Ci jak tworzyć takie proste, ale też bardziej złożone automatyzacje!
Airtable posiada też swoje własne integracje i pluginy w formie automatyzacji. Pozwolą Ci one na przykład wysyłać maile bezpośrednio z arkusza kalkulacyjnego, ustawiać powiadomienia, modyfikować rekordy i reagować na ich zmiany. Możesz używać nawet własnego skryptu w JS aby obsługiwać takie scenariusze. Te zaawansowane funkcje Airtable także odkryjesz w trakcie naszego kursu!
Kurs jest dla wszystkich, którzy chcą efektywnie zarządzać danymi i już korzystają z Excela lub Google Sheets, ale chcą osiągnąć znacznie więcej, w przyjaznym i szybkim interfejsie. Możliwości Airtable doceni każda osoba, która organizuje pracę, zajmuje się marketingiem, planowaniem, finansami czy buduje swoje własne aplikacje i strony WWW.
Cześć! W tym odcinku.
Pokażę Ci w jaki sposób wykorzystać Airtable,
oraz integromat do tego, aby automatycznie aktualizować pola w
zależności od uzupełnionych danych bądź podejmowanych przez nas akcji.
Przykładowo załóżmy, że chcę tworząc nowy
wpis automatycznie utworzyć dla niego folder na Google Drive.
Aby to zrobić, mam do dyspozycji przynajmniej kilka opcji.
Pierwszą z nich jest wykorzystanie
Integromatu, który będzie pobierał informacje o rekordach, który będzie
pobierał informacje o nowo utworzonych rekordach.
I tutaj muszę tylko połączyć się z
odpowiednią bazą oraz tabelą, a następnie ustawić tzw.
trigger field, czyli np.
w naszym przypadku może to być pole
created_at przechowujące informację o tym, kiedy dane rekord został utworzony.
Zatem tworzę teraz takie pole, a następnie odświeżam połączenie z integromatem.
Teraz mogę wybrać odpowiedni trigger field oraz
label Field, na podstawie którego będą identyfikowane rekordy.
W moim przypadku może być to główna kolumna.
Jako limit
ustawiamy 1, aczkolwiek możemy go tutaj zwiększyć i jedyne o co chciałbym zadbać to
to, aby pole Episode nie było pustym ciągiem znaków.
Jeżeli nie jest to automatyzacja może się
wykonać i tym samym folder może zostać utworzony.
Tutaj możemy jeszcze wskazać, które rekordy mają zostać uwzględnione.
A następnie tworzymy nowy folder na Google Drive.
Nazwą folderu w tym przypadku będzie nasza główna kolumna, czyli tutaj nazwa odcinka.
A oprócz tego bardzo często zdarza mi się przechowywać również w nazwie folderu
identyfikator wpisu Airtable pozwalający mi potem łatwo wyszukać folder np.
w sytuacji, gdyby nazwy folderów się powtarzały.
W rezultacie wystarczy po prostu przekazać tutaj identyfikator i mam praktycznie
pewność, że odpowiedni folder zostanie tutaj odnaleziony.
Ostatnim krokiem będzie oczywiście zaktualizowanie rekordu poprzez
przekazanie do niego identyfikatora nowo utworzonego katalogu.
Tutaj tylko muszę wskazać odpowiedni
identyfikator wpisu, a następnie folder ID.
I tak przygotowana automatyzacja sprawi,
że za każdym razem, gdy dodamy nowy wpis w momencie wykonania tego scenariusza.
Identyfikator folderu na Google drive zostanie tutaj dodany.
Osobiście mam z tym jednak mały problem,
polegający na tym, że w momencie utworzenia wpisu muszę czekać na wykonanie
automatyzacji lub też wykonywać scenariusz ręcznie, co zasadniczo mija się trochę z celem.
Oczywiście możemy tutaj zastosować
dodatkowe pole typu button, o którym mówiłem już w jednym z poprzednich lekcji.
Mianowicie tutaj możemy odwołać się do webhooka
przekazując dodatkowo identyfikator naszego rekordu.
Natomiast w dalszym ciągu mamy tutaj do
czynienia z sytuacją, w której musimy znajdować się bezpośrednio w Airtable i na
przykład już sytuacja, w której wykorzystamy sobie formularz do utworzenia
nowego wpisu nie pozwoli nam na utworzenie struktury na Google Drive.
Także jak widzisz rozwiązanie, które pokazałem trochę nas ograniczają,
ale jednocześnie też są
sytuacje, w których będą w zupełności wystarczające.
Poza tym chciałbym jeszcze zwrócić Twoją uwagę na to, aby zamiast opcji watch
records wykorzystywać w zamian opcję search records.
Dzięki niej będziemy w stanie wyszukiwać rekordy na podstawie jakiejś reguły
i w sytuacji, w której będziemy chcieli powtórzyć
wykonanie automatyzacji dla konkretnego
rekordu, nie będziemy musieli polegać na polu created_at bądź updated_at lub też w ogóle
wykonywać automatyzacji dla wszystkich rekordów znajdujących się w naszej bazie.
Otóż w tej sytuacji, tak jak już
pokazywałem, możemy wykorzystać pole typu check box do tego, aby oznaczać rekordy, w
przypadku których foldery zostały już utworzone.
W momencie, gdyby z jakiegoś powodu
istniała potrzeba ponownego wygenerowania folderów dla konkretnego wpisu.
Po prostu odznaczamy ten checkbox i czekamy na wykonanie scenariusza.
W tej sytuacji musimy po prostu napisać tutaj formułę, która będzie wybierać tylko
te rekordy, w przypadku których pole check box nie zostało zaznaczone.
I w tej sytuacji otrzymamy tutaj dwa
rekordy, co oczywiście potwierdzają dane, które tutaj mamy.
Alternatywnie moglibyśmy tutaj skorzystać z dodatkowych widoków, w
ramach których wykorzystalibyśmy
filtry i w ten sposób nie musielibyśmy pisać formuły, tylko po
prostu wyklikujemy poszczególne reguły.
Ostatecznie nawet w takiej sytuacji
scenariusz, który będziemy uruchamiać będzie wykonywał się raz na kilka minut,
więc znowu będziemy musieli czekać tutaj na dane,
aczkolwiek podkreślam, że takie sposoby aktualizowania pul na podstawie wprowadzonych
danych w niektórych przypadkach będą dla Ciebie przydatne.
W sytuacji, gdy potrzebujesz zaktualizować dane praktycznie na żywo.
Konieczne będzie wykorzystanie zakładki Automation, z pomocą której możesz
utworzyć automatyzację, która będzie wywoływać webhook w integromacie
to, w jaki sposób to robić, również już omawialiśmy.
Natomiast teraz pokażę Ci nieco bardziej zaawansowany sposób polegający na tym, że
nie tylko wyślemy dane, ale również zaktualizujemy je za pomocą skryptu.
Coś takiego może sprawdzić Ci się w niektórych sytuacjach, na przykład wtedy,
jeżeli skorzystanie z zapiera bądź inegrtomatu nie będzie z jakiegoś powodu możliwe.
Tutaj przede wszystkim musimy określić trigger, czyli moment, w którym zostanie
wywołana nasza automatyzacja, która będzie aktualizować
wskazane pole.
I tutaj załóżmy, że będę chciał uruchomić
automatyzację w momencie, gdy rekord zostanie utworzony. Następnie
wskazuje tabelę oraz akcję, która ma zostać wykonana.
I tutaj od razu dodam, że do tego, aby
pójść dalej będzie wymagana znajomość JavaScriptu przynajmniej na średnio
zaawansowanym poziomie i dodatkowo płatny plan Airtable.
Jeżeli jednak chcesz wykonać natychmiastową automatyzację, która nie będzie
wymagać płatnego planu Airtable, no to w integromacie zamiast webhooka
wystarczy, że utworzysz Mailhook, na którym z poziomu Airtable wyślesz
informacje na temat rekordu, który ma zostać zaktualizowany.
W ten sposób osiągniesz zamierzony cel
polegający na tym, że faktycznie Twoja automatyzacja wykona się natychmiast.
Tutaj jedyne o czym musisz pamiętać to to, aby np.
w tytule bądź bezpośrednio w treści maila
przesłać identyfikator rekordu, na którym chcesz wykonać scenariusz.
W momencie zapisania tej automatyzacji wystarczy wrócić teraz do integromatu i
przełączyć nasz mailhook w tryb nasłuchiwania.
Zatem teraz jeżeli utworzę tutaj jakiś dowolny nowy wpis, to wystarczy dosłownie
chwilę poczekać, aby dane pojawiły się w integtomacie.
W związku z tym, że faktycznie jako tytuł wiadomości mamy tutaj identyfikator wpisu
Airtable, nic nie stoi na przeszkodzie, aby odnaleźć go tutaj, utworzyć nowy folder, a
następnie zaktualizować przekazany rekord.
Także myślę, że wiesz już o co tutaj chodzi.
Natomiast teraz zajmiemy się przygotowaniem
kolejnej automatyzacji, która będzie wykorzystywać nie mailhooki, ale specjalny
skrypt JavaScript, z pomocą którego wyślemy dane na Webhook, a następnie
odbierzemy je i aktualizujemy poszczególne kolumny.
Tutaj przede wszystkim będzie interesowało nas to, aby skonfigurować zmienne, które
mają być dostępne w naszym skrypcie i w tym przypadku będzie interesować nas
identyfikator rekordu oraz identyfikator pliku na Google Drive
no i teraz jeżeli utworzymy sobie nową zmienną o nazwie input config, a następnie
przypiszemy sobie rezultat zwrócony przez następującą funkcję to pod tą zmienną, jak
już wiemy będą dostępne właściwości, które zdefiniowaliśmy w tym miejscu.
Następnie interesuje nas utworzenie drugiej zmiennej, wewnątrz której będziemy
przechowywać referencję czy też odwołanie do naszej tabeli.
W tym przypadku będzie to tabela data.
Następnie chcemy utworzyć zapytanie, którego wynik przypiszemy do zmiennej
response i aby wykonać zapytanie wykorzystamy metodę fetch, którą poprzedzamy
słowem kluczowym awite, które ma związek bezpośrednio z mechaniką JavaScriptu.
I nie będę go tutaj tłumaczył.
Najważniejsze, co musisz wiedzieć to fakt, że słowo kluczowe awite
musi zostać dodane przed wykonywaniem akcji asynchronicznych, czyli takich, na
których realizację musimy czekać dłuższy czas.
Przykładem takiej akcji jest wysłanie danych na webhook, w którego przypadku
oczekujemy na zwrócenie danych.
Zatem teraz kolejnym krokiem będzie
utworzenie naszego Webhooka i przekazanie go do naszego skryptu.
Od razu przełączę teraz scenariusz w tryb
nasłuchiwania, a następnie możemy przekazać adres naszego Webhooka.
Tutaj jeszcze do metody fetch jako drugi argument przekazujemy tzw.
obiekt konfiguracyjny, czyli obiekt JSON zawierający informacje na temat rodzaju
zapytania i w naszym przypadku będzie to metoda POST.
Następnie musimy przekazać nagłówki i w tym przypadku przekazujemy tutaj obiekt
zawierający klucz content type o wartości application JSON.
Domyślam się, że widzisz tutaj analogię z
modułu HTTP, z którego mieliśmy okazję korzystać w przypadku Integromatu.
Tak czy inaczej, naszą kolejną właściwością obiektu konfiguracyjnego
będzie właściwość body, której wartość ustawiamy w następujący sposób.
Jak widzisz, mamy tutaj odwołanie do
metody Stringify obiektu JSON do której możemy przekazać nasz własny
obiekt JSON, zawierający informacje na temat naszego rekordu.
W tym przypadku będzie to identyfikator Airtable.
Zatem aby odwołać się do właściwości, które mamy tutaj, w kolumnie po lewej
stronie, muszę wykorzystać zmienną input config, a następnie
mam tutaj od razu podpowiedzieć, że mam
dostępne dwie właściwości i mnie będzie interesowało Record_ID.
W tym momencie jeszcze aby przetestować ten skrypt to musimy zamknąć na chwilę to
okno i cofnąć się do poprzedniego kroku, gdzie musimy przetestować jego działanie.
W momencie gdy to będzie działać ponownie
możemy wrócić do edytora, a następnie przetestować działanie naszego skryptu.
Efekt powinien być taki, że tutaj otrzymamy informację o powodzeniu.
Natomiast w Integromacie faktycznie pojawił się tutaj Webhook zawierający identyfikator rekordu.
No to teraz nasze zadanie polega na tym, aby faktycznie utworzyć tutaj nowy folder,
a następnie zwrócić odpowiedź na nasz Webhook.
Tutaj jeszcze jedną rzeczą, którą musimy
zadbać to przekazanie dodatkowego pola o nazwie Episode.
Będzie ono przechowywać informację na temat nazwy odcinka.
Zatem przede wszystkim musimy dodać tutaj odpowiednią kolumnę.
W momencie, gdy ta zmienna będzie dostępna
w naszym skrypcie, możemy po prostu tutaj się do niej odwołać.
No i teraz musimy zadbać o to, aby rzeczywiście raz jeszcze przetestować nasz
skrypt i ponownie odebrać dane przesłane na Webhook.
Tutaj dane na nas czekają więc wybieram
opcję Process Existing i od razu mam dostęp zarówno do pierwszej
jak i drugiej właściwości, którą mogę wykorzystać przy tworzeniu folderu.
No i teraz moim zadaniem będzie zwrócenie
odpowiedzi na webhook i to akurat robiliśmy już wielokrotnie.
Przede wszystkim ustawiamy nagłówek Content type na Application JSON, aby
odpowiedź była właściwie zinterpretowana, a jako body ustawiamy w tym przypadku
po prostu obiekt JSON zawierający informacje na temat identyfikatora folderu na Google drive.
Tutaj jak widzisz, dbam tylko o to, aby dodać cudzysłów w odpowiednich miejscach,
no i oczywiście całą strukturę obiektu JSON.
Po zapisaniu zmian oraz uruchomieniu scenariusza i ponownym wykonaniu naszego
skryptu rezultat powinien być taki, że nie tylko scenariusz się wykona, ale w naszym
skrypcie powinna być dostępna już odpowiedź.
Co prawda w tym momencie jest ona niewidoczna, natomiast jeżeli utworzymy
sobie kolejną zmienną o nazwie JSON, a następnie przypiszemy do niej rezultat
metody JSON wykonanej na naszym obiekcie odpowiedzi, no to będziemy mogli
tutaj wykonać console log wyświetlający informacje na temat tej zmiennej.
Inaczej mówiąc, taki zapis sprawia, że
informacja, która została przekazana tutaj wyświetli się w polu w tym miejscu.
No to teraz w Integromacie możemy zapisać zmiany, a następnie włączyć nasz
scenariusz tak, aby odpowiadał już na wszystkie zapytania.
A następnie ponownie możemy przetestować skrypt.
Po chwili rzeczywiście mamy tutaj odpowiedź, ale zawierającą pusty obiekt.
Ze względu na to, że akcja JSON jest
akcją asynchroniczne i musimy tutaj wykorzystać słowo kluczowe awite.
Jeżeli raz jeszcze wykonamy sobie test, no to tym razem otrzymujemy tutaj
informację na temat identyfikatora nowo utworzonego pliku.
To teraz musimy odwołać się do tabeli Episode i
ta zmienna episode znajduje się dokładnie w
drugiej linii, a następnie wykorzystać metode, która jest tutaj dostępna.
Jak widzisz, tych metod i właściwości jest całkiem dużo.
Natomiast nas będzie interesowało zaktualizowanie rekordu poprzez podanie
jego identyfikatora, a następnie obiektu zawierającego
informacje na temat pól, które chcemy zaktualizować.
W naszym przypadku będzie to drive_ID,
którego wartość ustawimy na wartość właściwości drive_ID obiektu JSON.
W efekcie otrzymujemy taki oto skrypt, który jeżeli teraz wykonamy, to
rzeczywiście po zamknięciu tego okna i od razu zaktualizowaniu tej automatyzacji.
Identyfikator tego pliku pojawił się tutaj w tym miejscu.
Podobnie będzie w momencie, gdy utworzymy
sobie tutaj nowy wpis, to za chwilę pojawi się tutaj identyfikator folderu na Google Drive.
Coś takiego jednak jest niepożądaną akcją ze względu na to, że chcemy, aby nazwa
katalogu była ustawiona na wartość głównej kolumny.
Z tego powodu musimy zmodyfikować naszą automatyzację w taki sposób, aby była
uruchamiana tylko wtedy, gdy nasz wpis zostanie zaktualizowany.
Najlepiej będzie jednak, jeżeli
wykorzystamy tutaj opcje widoków i skonfigurujemy naszą automatyzację w taki
sposób, aby do tego drugiego widoku trafiały wyłącznie
takie wpisy, które posiadają nie tylko
uzupełnioną nazwę, ale również w przypadku których kolumna is ready jest zaznaczone.
Robimy coś takiego z tego powodu, że
jeżeli utworzę sobie nowy wpis, a następnie umieszczę tutaj jakąś wartość,
to w momencie wpisywania Airtable zapisuję już zmiany.
Efekt końcowy mógłby być wtedy taki, że
nasza automatyzacja wykona się zanim skończymy wpisywać tutaj pełne dane.
Dlatego najpierw uzupełniamy je, a potem zaznaczamy kolumnę is_ready,
która powoduje przeniesienie naszego rekordu do nowego widoku.
I tutaj tylko musimy ustawić sobie odpowiednie filtry.
Te filtry będą wskazywały na rekordy, w przypadku których foldery nie są
utworzone, ale które zostały oznaczone jako gotowe.
No i jak widzisz, nowy rekord pojawił się w tym widoku i zaraz
potem został utworzony
dla niego folder.
Wygląda na to, że na ten moment wiesz już
wszystko na temat aktualizacji pól Airtable w zależności od Twoich działań.
I masz tutaj pełny wachlarz możliwości,
które możesz dostosować do swojego scenariusza.
Oczywiście pamiętaj proszę, że dane, które
tutaj dynamicznie się pojawią mogą być również wykorzystane na potrzeby innych
automatyzacji poprzez właśnie przerzucanie rekordów do nowych widoków, bądź też
wykorzystanie kolumny formuła, wewnątrz której możesz wykorzystać te nowo
pojawiające się dane do tego, aby w jakiś sposób je przetransformować.
Na ten moment z mojej strony to już wszystko.
Dziękuję Ci za uwagę i zapraszam do kolejnych materiałów.