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.
W tej lekcji pokażę Ci, w jaki sposób
możemy wykorzystać te dane nie tylko do tego, aby je wyświetlać, ale również
modyfikować z pomocą własnoręcznie przygotowanego panelu, który świetnie
sprawdzi się jako narzędzie wewnętrzne do pracy nawet z wieloma bazami danych w Airtable.
Narzędzie, które mam teraz na myśli to
Retool, który co prawda nie posiada bezpośredniej integracji z Airtable,
natomiast mamy do dyspozycji rozszerzenie BaseQL, które możemy wykorzystać do
tego, aby łatwo połączyć się z Airtable z pomocą technologii GraphQL.
Co prawda sama technologia GraphQL jest teoretycznie bardzo skomplikowanym
tematem, natomiast w pewnym sensie stanowi ona alternatywę dla REST API.
Pobieranie danych, a nawet aktualizowanie
ich jest może nieco trudniejsze, ale jeżeli na ten moment koncepcja obiektów
JSON jest Ci znana, to z pewnością sobie poradzisz.
Tymczasem jeszcze na temat Retool musisz wiedzieć tyle, że jest to narzędzie, które
z pomocą graficznego interfejsu pomoże połączyć Ci się z dowolnym źródłem danych,
a następnie przygotować panel administracyjny, który będzie umożliwiał
odczytywanie, jak i zapisywanie i aktualizowanie danych.
I teraz dobra wiadomość jest taka, że nie musisz znać języków programowania na
zaawansowanym poziomie, aby korzystać z Retool'a.
Natomiast z całą pewnością przyda Ci się wiedza podstawowa.
Zaczniemy od tego, aby utworzyć sobie nową
aplikację Retool i tylko powiększy delikatnie ekran.
No i tutaj już po chwili jesteśmy przeniesieni do panelu, gdzie w głównej
części znajduje się canvas, czyli miejsce, w którym projektujemy nasz panel.
Natomiast po prawej stronie mamy wszystkie komponenty, które możemy po prostu
przeciągnąć na ekran, a następnie odpowiednio połączyć ze źródłem danych.
I właśnie w temacie źródła danych to tutaj na dole znajduje się panel, z pomocą
którego będziemy definiować sposób przesyłania i wymiany danych.
Tak jak powiedziałem, jeżeli chodzi o źródło danych, nam zależy na tym, aby
utworzyć nowe połączenie wykorzystujące technologię GraphQL.
Przy okazji zwróćcie uwagę, że mamy tutaj naprawdę dużo źródeł danych, z których
możemy skorzystać, włączając w to arkusz Googl Sheets.
W każdym razie wybieram opcję GraphQL no i tutaj musimy podać nazwę.
I zanim przejdziemy do dalszej
konfiguracji musimy połączyć BaseQL oraz Airtable.
Możemy to zrobić wykorzystując zakładkę
Apps, gdzie możemy zainstalować aplikację BaseQL.
Po jej dodaniu konfiguracja sprowadza się w zasadzie wyłącznie do tego, aby w tym
miejscu przekazać klucz API do naszego Airtable.
Kolejnym krokiem będzie utworzenie konta w
BaseQL, które pozwoli nam zarządzać naszymi połączeniami.
W rezultacie zostaniemy przekierowani do takiego panelu, który pozwoli nam wchodzić
w interakcję z naszymi danymi wpisując tutaj zapytanie GraphQL.
Jednocześnie mamy tutaj endpoint, który od razu możemy skopiować do Retool'a.
Następnie musimy zadbać również o to, aby
zabezpieczyć nasze połączenie z pomocą tokenu.
Możemy to zrobić przechodząc do ustawień i od razu możemy włączyć tutaj mutację,
czyli możliwość tworzenia, aktualizowania oraz usuwania rekordów w naszym źródle.
Poza tym jeżeli klikniemy jeszcze tutaj to
zobaczymy Secret Token, którego wartość możemy skopiować do Retool'a.
No i teraz mamy potwierdzenie, że nasz endpoint został zabezpieczony oraz ma
aktywowane mutację, a my musimy zadbać tylko o to, aby przekazać do naszego
połączenia nagłówek authorization, do którego przekażemy nasz secret token.
Po utworzeniu źródła tak naprawdę mamy już połączenie z naszym Airtable.
Zwróć proszę tylko uwagę, że znajdują się tutaj w tej chwili trzy rekordy i w
pierwszej kolejności pobierzemy je i wyświetlimy z pomocą Retool'a.
Aby to zrobić zaznaczam naszą tabelę.
I tutaj od razu mam informację o tym, że jako źródło danych tej tabeli ustawione
jest odwołanie do zapytania Query 1, a następnie właściwości Data.
Oznacza to mniej więcej tyle, że jeżeli tutaj napiszę zapytanie do naszej bazy, a
następnie wykonam je, to informacje z Airtable powinny trafić tutaj do tej tabeli.
No to teraz zapytanie
graphQL tworzymy zapisując query,
a następnie odwołujemy się do nazwy tabeli i w naszym przypadku będzie to infos.
Przy czym jak widzisz nazwy zapisywane są tutaj małymi literami.
Następnie musimy wskazać które kolumny chcemy pobrać i nas konkretnie będzie
interesowało pobranie wszystkich kolumn, które mamy w tabeli.
Więc musimy teraz podać po prostu ich nazwy.
I tutaj zwróć jeszcze uwagę, że oprócz małych liter mamy również zastąpienie
podkreślenia zapisem tak zwanym camel case, czyli po prostu wielką literą.
Natomiast nie ma z tym problemu, ponieważ
od razu mamy tutaj nawet podpowiadanie składni.
No i teraz nasze zapytanie GraphQL jest tutaj
gotowe i musisz przyznać, że jego struktura jest naprawdę prosta.
No to teraz musimy przetestować nasze
zapytanie uruchamiając je z pomocą tego przycisku.
No i teraz mamy dwie wiadomości.
Dobra jest taka, że dane zostały pobrane,
a zła taka, że zostały wyświetlane w złej formie.
I to wynika akurat z faktu, że pod właściwością data, którą mamy tutaj
znajduje się obiekt JSON, a nie jego poszczególne właściwości.
Z tego powodu mamy tutaj dwie opcje albo
odwołamy się od razu do tabeli infos w następujący sposób i jest to jak
najbardziej dobre rozwiązanie lub też ewentualnie możemy skorzystać z opcji
Transformer, która dostępna jest dokładnie tutaj.
W tym miejscu możemy zapisać kod JavaScript i
w dowolny sposób zmodyfikować dane, które zostały tutaj dostarczone.
Nas jednak będzie interesowało to, aby po prostu dopisać tutaj właściwość infos.
Dzięki temu, jeżeli ponownie wykonam
nasze zapytanie, znowu wszystko jest w porządku.
A tutaj też od razu mamy zachowany lepszy porządek.
I jeżeli już o porządku mowa, to nasze
zapytanie nie do końca informuje nas o tym, jakie jest dokładnie jego zadanie.
Z tego powodu możemy zmienić tutaj nazwę.
I jak widzisz od razu to referencja, czyli odwołanie zostało tutaj podmienione.
Dzięki temu nasza aplikacja dalej działa, a w sytuacji, gdy pojawią się tutaj
kolejne zapytania, będziemy w stanie łatwo się w nich odnaleźć.
No to teraz nasze zadanie będzie polegać
na tym, aby zaktualizować rekord, który jest aktualnie kliknięty.
Oznacza to, że będziemy musieli tutaj
wykorzystać pole, które w zasadzie już tutaj dodałem, natomiast teraz usuniemy
sobie i dodamy je jeszcze raz, ponieważ będzie nam zależało na tym, aby było to
pole editabletext oraz dodatkowo będzie nam potrzebny przycisk.
Jeżeli chodzi o konfigurację tych poszczególnych elementów.
Jak widzisz możemy po prostu w opcjach
ustawiać wszystkie ich parametry takie jak np.
wygląd oraz etykiety, które znajdują się w tym przypadku na przycisku.
Na ten moment będziemy chcieli jeszcze
ustawić domyślną wartość tego pola na wartość aktualnie zaznaczonego rekordu.
Jeżeli w polu Default value zacznę
wpisywać nawiasy klamrowe, no to od razu mamy tutaj bardzo pomocne podpowiedzi.
Mianowicie w naszym przypadku będziemy
chcieli umieścić w tym polu zawartość komórki z tabeli name.
No i aby to zrobić wybieram opcję Table 1,
czyli odwołanie do tej naszej pierwszej tabeli.
Następnie SelectedRow oraz data.
W tym momencie mamy tutaj błąd, ponieważ
oczywiście musimy odwołać się do konkretnej właściwości tego pola.
No i zwróć uwagę, że rzeczywiście jak już klikamy na poszczególne elementy,
zawartość pola name zostaje tutaj zmieniana.
W tym momencie musimy jeszcze zadbać o to, aby aktualizacja tego pola oraz następnie
kliknięcie przycisku zaktualizuj przesłało dane do Airtable.
I coś takiego możemy zrobić tworząc nowe
zapytanie wykorzystujące GraphQL do tego, aby zaktualizować dane.
Przede wszystkim zadbam tutaj o to, aby nadać odpowiednią nazwę dla tego
zapytania, a następnie zapiszemy sobie tutaj mutację.
W przeciwieństwie do Query, mutację zaczynamy właśnie w ten sposób, a
następnie musimy zapisać co dokładnie chcemy zrobić.
Jeżeli teraz wcisnę skrót klawiszowy
Control Spacja, zostanie wyświetlona lista podpowiedzi i od razu mamy jasną
informację, że w tym przypadku chodzi nam o zaktualizowanie tabeli info.
Jak już wiesz, do tego, aby aktualizować
rekordy potrzebujemy identyfikatora naszego rekordu.
Identyfikator ten pobraliśmy już sobie i znajduje się w komórce
recid
dodatkowo oczywiście potrzebujemy wartości z kolumny name, zatem będziemy mogli tutaj
przekazać rekord ID, a następnie zmienną name.
Jak widzisz mam tutaj błędy informujące
mnie o tym, że nie mam dostępu do tych zmiennych.
Jest to oczywiście prawda i sam błąd
wynika z samej struktury GraphQL, który wymaga od nas tego, aby przy mutacji od
razu określić pola, które mogą zostać tutaj przyjęte.
Zatem w naszym przypadku interesuje nas recID, które będzie wartością typu
string, a następnie wartość name, która również będzie Stringiem.
W tej chwili nasze błędy tutaj zniknęły.
Został nam tylko jeden, ponieważ musimy
określić jaką informację zwrotną chcemy otrzymać w wyniku tego zapytania.
I w tym przypadku myślę, że wystarczy nam całkowicie RecordID.
Zanim jeszcze będziemy mogli wykonać to zapytanie, musimy jeszcze przypisać do
naszych zmiennych poszczególne wartości pochodzące z naszej tabeli.
Zatem tutaj w sekcji Variables w przypadku Record ID odwołuje się tutaj do aktualnie
zaznaczonego rekordu, a następnie do właściwości RecID.
Z kolei w drugim polu robię dokładnie to samo, z tą różnicą, że odwołuje się do
właściwości name i myślę, że jest to jak najbardziej oczywiste.
I teraz jeszcze zanim wykonamy sobie to zapytanie, będę chciał zadbać również o
to, aby po aktualizacji rekordu zawartość naszej tabeli została przeładowana.
Aby to zrobić, możemy przypisać sobie event handler do zdarzenia success.
Oznacza to mniej więcej tyle, że w momencie gdy nasze zapytanie zostanie
wykonane poprawnie, będziemy chcieli uruchomić kolejne zapytanie i w naszym
przypadku będzie to zapytanie typu fetch_infos.
No to teraz zapisuję to zapytanie i ostatnią rzeczą, którą musimy tutaj zrobić
jest podłączenie tego zapytania do naszego przycisku.
Możemy to zrobić klikając na niego, a następnie przypisując event handler
reagujący na kliknięcie, które uruchomi nam zapytanie o nazwie Update info.
Wszystko w tym momencie się tutaj zgadza,
więc mogę po prostu wybrać jakieś pole, a następnie zaktualizować jego wartość.
No i teraz oczywiście wystarczy wykonać nasze zapytanie
i już po chwili mamy informację, że zapytanie zostało wykonane poprawnie.
Natomiast jeżeli przejdziemy do Airtable zobaczymy, że nic się nie zmieniło.
Wynika to z prostego błędu, który popełniłem przypisując wartości zmiennych.
Oczywiście wartość name nie pochodzi z tabeli, gdzie mamy stare dane, tylko
bezpośrednio z pola tekstowego znajdującego się tutaj.
Zatem wystarczy, że odwołam się do
odpowiedniego pola, a następnie do jego właściwości.
No i tutaj oczywiście od razu możemy zmienić sobie jego nazwę.
Tak, aby nic się nam tutaj nie mieszało.
Raz jeszcze zapisuję zmiany i w momencie
aktualizacji rekordu zapytanie raz jeszcze zostało wykonane poprawnie, z tą
różnicą, że w tym momencie nowe dane zostały przesłane do Airtable.
Jak widzisz, pomimo tego, że GraphQL jest dla Ciebie zupełnie nieznaną jeszcze
technologią, byliśmy w stanie pobrać oraz zaktualizować rekordy.
Mało tego, już nic nie stoi na
przeszkodzie, aby wykonać tutaj dodatkowe akcje, takie jak np.
usuwanie bądź stawianie nowych rekordów.
Jedyne o co musisz zadbać o to, aby dodać na canvasie
nowe pola i po przypisywać do nich wartości, a następnie przekazać je do zapytania.
Oczywiście sam Retool oferuje znacznie więcej możliwości i możesz przejrzeć
dostępne komponenty oraz dostępne w nich opcje, które pozwolą Ci dostosować ich
zachowanie oraz nawet wyświetlać dane w postaci nawet wykresów.
To na co chciałbym jeszcze zwrócić Twoją
uwagę to fakt, że możesz zajrzeć do dokumentacji GraphQL znajdującej się na
stronie Retool'a, gdzie znajdziesz masę przykładów dotyczących zarówno tworzenia
połączenia, jak i wykonywania bardziej zaawansowanych zapytań.
W efekcie to co tutaj zyskasz to możliwość
wchodzenia w interakcję z danymi pochodzącymi z Airtable znajdującymi się na
różnych tabelach, a nawet na różnych kontach Airtable.
Dodatkowo oczywiście tak przygotowany panel możesz udostępnić innym osobom i w
ten sposób tworzyć narzędzia wewnętrzne, które umożliwią łatwy wgląd i
modyfikowanie danych w sposób całkowicie przez Ciebie kontrolowany.
Coś takiego oczywiście możesz też osiągnąć w pewnym stopniu wykorzystując widoki
Airtable i udostępniając je poszczególnym osobom.
Natomiast oczywiście możliwości widoków są
zdecydowanie bardziej ograniczone niż w przypadku Retool'a.
Na sam koniec dodam jeszcze, że aplikacji podobnych do Retool'a jest naprawdę bardzo
dużo, natomiast postanowiłem skupić się właśnie na nim, ponieważ uważam, że jest
najlepszym dostępnym na rynku builderem narzędzi wewnętrznych, które umożliwią
zrealizowanie omawianego przeze mnie zadania.
Teraz dziękuję Ci za uwagę i zapraszam Cię do kolejnej lekcji.