Tworzenie pulpitów nawigacyjnych na żywo za pomocą Airtable i React

Opublikowany: 2022-03-11

Niezależnie od tego, czy firma jest dużym przedsiębiorstwem, czy początkującym start-upem, zbieranie danych od użytkowników i klientów oraz raportowanie lub wizualizacja tych danych ma kluczowe znaczenie dla firmy.

Ostatnio współpracowałem ze start-upem telemedycznym z Brazylii. Jej misją jest zapewnienie zdalnej opieki i monitoringu poprzez łączenie pacjentów z pracownikami medycznymi i trenerami zdrowia. Podstawową potrzebą było stworzenie interfejsu dla trenerów i pracowników służby zdrowia w celu łatwego przeglądania informacji o pacjencie i najważniejszych wskaźników związanych z jego konkretną sytuacją: pulpitu nawigacyjnego.

Wpisz Typeform i Airtable.

Wpisz formularz

Typeform to jedno z narzędzi do zbierania danych, które umożliwia responsywne korzystanie z Internetu użytkownikom wypełniającym ankietę. Zawiera również kilka funkcji, które sprawiają, że ankiety są bardziej inteligentne, zwłaszcza w połączeniu:

  • Skoki logiczne
  • Ukryte pola

Ankiety można udostępniać za pośrednictwem adresów URL, które mogą być wstępnie wypełnione wartościami ukrytych pól, które można następnie wykorzystać do implementacji skoków logicznych i zmiany zachowania ankiety dla użytkownika z linkiem.

Zastosowania nadmuchiwane

Airtable to hybryda arkusza kalkulacyjnego i bazy danych oraz platforma do współpracy w chmurze. Skupienie się na funkcjonalności „wskaż i kliknij” oznacza, że ​​użytkownicy nietechniczni mogą go skonfigurować bez kodowania. Airtable ma wiele przypadków użycia w każdej firmie lub projekcie.

Możesz użyć podstawy Airtable do:

  • CRM (zarządzanie relacjami z klientem)
  • HRIS (system informacji o zasobach ludzkich)
  • Zarządzanie projektami
  • Planowanie treści
  • Planowanie wydarzenia
  • Odpowiedź zwrotna użytkownika

Istnieje wiele innych potencjalnych przypadków użycia. Tutaj możesz zapoznać się ze studiami przypadków Airtable.

Jeśli nie znasz Airtable, koncepcyjny model danych przedstawia się następująco:

  • Obszar roboczy — złożony z podstaw
  • Podstawa — składa się z tabel
  • Tabela — składa się z pól (kolumn) i wierszy
  • Widok — perspektywa na dane tabeli z opcjonalnymi filtrami i zredukowanymi polami
  • Pole — kolumna tabeli z typem pola; zobacz tutaj, aby uzyskać więcej informacji na temat typów pól

Oprócz udostępnienia bazy danych hostowanej w chmurze ze znanymi funkcjami arkusza kalkulacyjnego, oto kilka powodów, dla których platforma jest tak potężna:

Przedstawienie technicznych i nietechnicznych użytkowników pracujących z Airtable.

Dla użytkowników nietechnicznych Airtable zapewnia:

  • Łatwy w użyciu interfejs front-end
  • Automatyzacje, które można tworzyć za pomocą konfiguracji „wskaż i kliknij”, aby wysyłać wiadomości e-mail, przetwarzać wiersze danych, planować spotkania w kalendarzach i nie tylko
  • Wiele typów widoków, które pozwalają zespołom współpracować na tej samej podstawie i tabelach
  • Aplikacje Airtable, które można zainstalować z rynku w celu doładowania bazy

Dla programistów Airtable zapewnia:

  • Dobrze udokumentowany back-end API
  • Środowisko skryptowe, które pozwala programistom zautomatyzować działania w ramach Bazy
  • Automatyzacje, które mogą również uruchamiać niestandardowe, opracowane skrypty, które działają w środowisku Airtable, rozszerzając możliwości automatyzacji

Możesz dowiedzieć się więcej o Airtable tutaj.

Pierwsze kroki: Wpisz formularz do Airtable

Ankiety Typeform zostały już skonfigurowane przez klienta, a następnym krokiem było zaplanowanie, w jaki sposób dane trafią do Airtable, a następnie zostaną przekształcone w pulpit nawigacyjny. Podczas tworzenia kokpitów menedżerskich na dowolnej bazie danych należy wziąć pod uwagę wiele pytań: Jak powinniśmy uporządkować dane? Jakie dane będą musiały zostać przetworzone przed wizualizacją? Czy powinniśmy zsynchronizować Base z Arkuszami Google i korzystać z Google Data Studio? Czy powinniśmy wyeksportować i znaleźć inne narzędzie innej firmy?

Na szczęście dla programistów Airtable nie tylko zapewnia automatyzację i skrypty do obsługi etapów przetwarzania danych, ale także umożliwia tworzenie niestandardowych aplikacji i interfejsów na bazie Airtable z aplikacjami Airtable.

Niestandardowe aplikacje w Airtable

Niestandardowe aplikacje w Airtable istnieją od czasu wydania zestawu SDK Airtable Blocks na początku 2018 roku, a niedawno zmieniono ich nazwę na Apps. Wydanie Blocks było ogromne, ponieważ oznaczało to, że twórcy mieli teraz możliwość opracowania, jak to ujmuje Airtable, „zestawu Lego, który można nieskończenie rekombinować”.

Niedawno wraz ze zmianą aplikacji Airtable Marketplace umożliwił również publiczne udostępnianie aplikacji.

Airtable Apps zapewnia firmom nieskończenie rekombinowany zestaw Lego, który mogą dostosować do swoich potrzeb.

Aby zbudować niestandardową aplikację w Airtable, programista JavaScript musi wiedzieć, jak korzystać z React, jednej z najpopularniejszych bibliotek JavaScript do tworzenia interfejsów użytkownika. Airtable zapewnia bibliotekę komponentów funkcjonalnych komponentów React i hooków, które są ogromną pomocą w szybkim tworzeniu spójnego interfejsu użytkownika i określaniu, w jaki sposób będziesz zarządzać stanem w aplikacji i jej komponentach.

Sprawdź artykuł Airtable Pierwsze kroki, aby uzyskać więcej informacji, oraz Airtable na GitHub, aby zapoznać się z przykładami aplikacji.

Wymagania dotyczące tablicy rozdzielczej airtable

Po zapoznaniu się z makietami kokpitów z zespołem klienta, typy danych do wykorzystania były jasne. Potrzebowalibyśmy serii komponentów pulpitu nawigacyjnego, które byłyby wyświetlane jako tekst na pulpicie nawigacyjnym i wykresów różnych metryk, które można by śledzić w czasie.

Trenerzy i specjaliści medyczni musieli być w stanie zbudować niestandardowy pulpit nawigacyjny dla każdego pacjenta, więc potrzebowaliśmy elastycznego sposobu dodawania i usuwania wykresów. Inne dane statyczne odnoszące się do każdego pacjenta byłyby wyświetlane niezależnie od wybranego pacjenta.

W tym przypadku sekcje deski rozdzielczej sprowadzały się do:

  • Informacje ogólne — imię i nazwisko pacjenta, adres e-mail, numer telefonu, preferencje dotyczące kontaktu, data urodzenia, wiek
  • Cele - Cele, które pacjent ma na podstawie wyników ankiety
  • Niektóre statystyki — BMI, wzrost i waga
  • Stosowanie leków — Lista wszystkich leków na receptę, które pacjent już stosował
  • Historia schorzeń rodzinnych — pomocna w diagnozowaniu niektórych schorzeń
  • Wykresy — sekcja, w której użytkownik pulpitu Airtable może dodać wykres i skonfigurować, które dane będą wizualizowane w miarę upływu czasu

Obraz przedstawiający makieta tablicy rozdzielczej Airtable.

Jednym ze sposobów podejścia do wszystkich sekcji z wyjątkiem wykresów byłoby zakodowanie wszystkich kolumn dotyczących celów, stosowania leków i historii rodziny na pulpicie nawigacyjnym. Jednak nie pozwoliłoby to zespołowi klienta na dodanie nowych pytań do ankiety Typeform ani dodanie nowej kolumny do tabeli Airtable w celu zaprezentowania tych danych na pulpicie nawigacyjnym bez konieczności aktualizacji aplikacji niestandardowej przez programistę.

Bardziej eleganckim i rozszerzalnym rozwiązaniem tego wyzwania było znalezienie sposobu na oznaczanie kolumn jako odpowiednich dla określonej sekcji pulpitu nawigacyjnego i pobieranie tych kolumn przy użyciu metadanych, które Airtable ujawnia podczas korzystania z modeli tabeli i pola.

Udało się to osiągnąć za pomocą opisów pól jako miejsca do oznaczenia kolumny z tabeli jako istotnej dla sekcji pulpitu nawigacyjnego, która ma być wyświetlana użytkownikowi. Następnie mogliśmy zapewnić, że tylko osoby z rolą Twórcy (administratorzy) bazy mają możliwość modyfikowania tych opisów pól, aby zmienić to, co pojawia się na pulpicie nawigacyjnym. Aby zilustrować to rozwiązanie, skupimy się głównie na pozycjach w informacjach ogólnych i sposobie prezentacji wykresów.

Tworzenie systemu #TAG#

Biorąc pod uwagę sekcje pulpitu nawigacyjnego, sensowne było tworzenie tagów wielokrotnego użytku dla niektórych sekcji i określonych tagów dla niektórych kolumn. W przypadku pozycji, takich jak imię i nazwisko pacjenta, adres e-mail i numer telefonu, do opisu każdego pola dodano odpowiednio #NAME# , #EMAIL# i #PHONE# . Umożliwiłoby to pobranie tych informacji za pośrednictwem metadanych tabeli w następujący sposób:

 const name = table ? table.fields.filter(field => field.description?.includes("#NAME#"))

W przypadku obszarów pulpitu nawigacyjnego, które musiałyby czerpać z wielu otagowanych kolumn, mielibyśmy następujące tagi dla każdej sekcji pulpitu nawigacyjnego:

  • OBJ - Cele
  • FAM - Historia rodziny
  • MED - Stosowanie leków
  • CAN - Historia rodzinna specyficzna dla raka
  • WYKRES — dowolna kolumna, która powinna być źródłem do dodawania wykresów; musi być ilością

Ponadto ważne było oddzielenie nazwy kolumny w tabeli od etykiety, którą otrzymałaby na pulpicie nawigacyjnym, aby wszystko, co otrzymało #TAG# , miało również możliwość otrzymania dwóch tagów #LABEL# w opisie pola . Opis pola wyglądałby tak:

Zrzut ekranu przedstawiający użycie tagów w opisie pola.

W przypadku braku tagów #LABEL# wyświetlimy nazwę kolumny z tabeli.

Możemy przeanalizować etykietę ustawioną w opisie za pomocą prostej funkcji, takiej jak ta, po pobraniu pola z poprzednim przykładem kodu:

 // utils.js export const setLabel = (field, labelTag = "#LABEL#") => { const labelTags = (field.description?.match(new RegExp(labelTag, "g")) || []).length; let label; if (labelTags === 2) label = field.description?.split(`${labelTag}`)[1]; if (!label || label?.trim() === '') label = field.name; return {...field, label, name: field.name, description: field.description}; }

Dzięki temu systemowi #TAG# osiągamy trzy główne rzeczy:

  • Nazwy kolumn (pól) w tabeli można dowolnie zmieniać.
  • Etykiety danych na pulpicie nawigacyjnym mogą różnić się od nazw kolumn.
  • Sekcje pulpitu nawigacyjnego dla celów, stosowania leków, historii rodziny i wykresów mogą być aktualizowane przez zespół klienta bez dotykania wiersza kodu.

Utrzymujący się stan w Airtable

W React używamy stanu i przekazujemy go do komponentów jako props, aby ponownie wyrenderować ten komponent, jeśli jego stan się zmieni. Zwykle jest to powiązane z wywołaniem API, które zasila komponent pulpitu nawigacyjnego, ale w Airtable mamy już wszystkie dane i po prostu musimy filtrować to, co wyświetlamy, na podstawie oglądanego pacjenta. Ponadto, jeśli użyjemy state, dane nie będą utrwalane po odświeżeniu w samym dashboardzie.

Jak więc utrwalić wartość po odświeżeniu, aby zachować filtrowanie pulpitu nawigacyjnego? Na szczęście Airtable zapewnia hak do tego o nazwie useGlobalConfig , w którym utrzymuje magazyn klucz-wartość dla instalacji aplikacji na pulpicie nawigacyjnym. Musimy po prostu zaimplementować logikę pobierania wartości z tego magazynu klucz-wartość, gdy aplikacja się ładuje, aby zasilać nasze komponenty pulpitu nawigacyjnego.

Jeszcze bardziej przydatne w korzystaniu z useGlobalConfig jest to, że gdy jego wartości są ustawione, komponent dashboardu i jego komponenty potomne są ponownie renderowane, więc możesz użyć Global Config tak, jakbyś używał zmiennej stanu w typowej implementacji React.

Przedstawiamy wykresy

Airtable udostępnia przykłady wykresów za pomocą aplikacji Simple Chart, która wykorzystuje React Charts, opakowanie React na Chart.js (chart-ception).

W aplikacji Simple Chart mamy jeden wykres dla całej aplikacji, ale w naszej aplikacji Dashboard potrzebujemy możliwości dodawania i usuwania własnych wykresów z własnego pulpitu nawigacyjnego. Co więcej, w dyskusji z zespołem klienta wydaje się, że niektóre wskaźniki byłyby lepiej widoczne na tym samym wykresie (np. odczyty rozkurczowego i skurczowego ciśnienia krwi).

W związku z tym mamy do czynienia z następującymi kwestiami:

  • Trwały stan dla wykresu każdego użytkownika (lub jeszcze lepiej przy użyciu Global Config)
  • Zezwalanie na wiele metryk na wykresie

W tym miejscu przydaje się moc Global Config, ponieważ możemy użyć magazynu klucz-wartość, aby zachować wybrane dane i wszystko inne na naszej liście wykresów. Gdy konfigurujemy wykres w interfejsie użytkownika, sam składnik wykresu zostanie ponownie wyrenderowany z powodu aktualizacji Global Config. W sekcji wykresów pulpitu nawigacyjnego znajduje się podsumowanie z komponentami do odniesienia, skupiające się na pulpitach charts.js i pojedynczym chart.js.

Tabela przekazywana do każdego wykresu służy do znajdowania pól przez metadane, podczas gdy przekazane rekordy zostały już przefiltrowane przez pacjenta wybranego w komponencie pulpitu nawigacyjnego najwyższego poziomu, który importuje dashboard_charts/index.js .

Zwróć uwagę, że pola wymienione jako opcje na liście rozwijanej wykresu są pobierane za pomocą tagu #CHART# , o którym wspomnieliśmy wcześniej, z tą linią w haczyku useEffect :

 // single_chart/index.js … useEffect(() => { (async () => { ... if (table) { const tempFieldOptions = table.fields.filter(field => field.description?.includes('#CHART#')).map(field => { return { ...setLabel(field), value: field.id } }); setFieldSelectOptions([...tempFieldOptions]); } })(); }, [table, records, fields]); ...

Powyższy kod pokazuje, w jaki sposób wspomniana wcześniej funkcja setLabel jest używana z #TAG# w celu dodania wszystkiego, co znajduje się w tagach #LABEL# i wyświetlenia ich dla opcji w menu rozwijanym pola.

Nasz komponent wykresu wykorzystuje możliwości wieloosiowe zapewniane przez Chart.js, które są pokazane w React Charts. Właśnie rozszerzyliśmy go za pomocą interfejsu użytkownika o możliwość dodania zestawu danych i typu wykresu (linia lub słupek).

Kluczem do używania Global Config w tym przypadku jest wiedza, że ​​każdy klucz może zawierać tylko ciąg znaków | wartość logiczna | numer | null | GlobalConfigArray | GlobalConfigObject (zobacz odwołanie do globalnej wartości konfiguracji).

Mamy następujące elementy do utrzymania na wykresie:

  • chartTitle , który jest generowany automatycznie i którego nazwę może zmienić użytkownik
  • tablica pól , w której każdy element ma:
    • pole jako fieldId z Airtable
    • wykresOpcja jako jedna linia | pasek, jak wskazują dokumenty Chart.js
    • kolor jako kolor Airtable z colorUtils
    • hex jako kod szesnastkowy odnoszący się do koloru Airtable

Aby sobie z tym poradzić, uznałem, że najwygodniej jest skrócić te dane jako obiekt, zamiast ustawiać klucze i wartości Global Config całkowicie w dół. Zobacz poniższy przykład (w skrócie globalConfig.json), który zawiera wartości Global Config do filtrowania rekordów według pacjenta oraz kilka powiązanych zmiennych służących do obsługi komponentu filtrującego typeahead (dzięki response-bootstrap-typeahead):

 { "xCharts": { "chart-1605425876029": "{\"fields\":[{\"field\":\"fldxLfpjdmYeDOhXT\",\"chartOption\":\"line\",\"color\":\"blueBright\",\"hex\":\"#2d7ff9\"},{\"field\":\"fldqwG8iFazZD5CLH\",\"chartOption\":\"line\",\"color\":\"blueLight1\",\"hex\":\"#9cc7ff\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 2:37:56 AM\"}", "chart-1605425876288": "{\"fields\":[{\"field\":\"fldGJZIdRlq3V3cKu\",\"chartOption\":\"line\",\"color\":\"blue\",\"hex\":\"#1283da\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 2:37:56 AM\"}", "chart-1605425876615": "{\"fields\":[{\"field\":\"fld1AnNcfvXm8DiNs\",\"chartOption\":\"line\",\"color\":\"blueLight1\",\"hex\":\"#9cc7ff\"},{\"field\":\"fldryX5N6vUYWbdzy\",\"chartOption\":\"line\",\"color\":\"blueDark1\",\"hex\":\"#2750ae\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 2:37:56 AM\"}", "chart-1605425994036": "{\"fields\":[{\"field\":\"fld9ak8Ja6DPweMdJ\",\"chartOption\":\"line\",\"color\":\"blueLight2\",\"hex\":\"#cfdfff\"},{\"field\":\"fldxVgXdZSECMVEj6\",\"chartOption\":\"line\",\"color\":\"blue\",\"hex\":\"#1283da\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 2:39:54 AM\"}", "chart-1605430015978": "{\"fields\":[{\"field\":\"fldwdMJkmEGFFSqMy\",\"chartOption\":\"line\",\"color\":\"blue\",\"hex\":\"#1283da\"},{\"field\":\"fldqwG8iFazZD5CLH\",\"chartOption\":\"line\",\"color\":\"blueLight1\",\"hex\":\"#9cc7ff\"}],\"chartTitle\":\"New Chart\"}", "chart-1605430916029": "{\"fields\":[{\"field\":\"fldCuf3I2V027YAWL\",\"chartOption\":\"line\",\"color\":\"blueLight1\",\"hex\":\"#9cc7ff\"},{\"field\":\"fldBJjtRkWUTuUf60\",\"chartOption\":\"line\",\"color\":\"blueDark1\",\"hex\":\"#2750ae\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 4:01:56 AM\"}", "chart-1605431704374": "{\"fields\":[{\"field\":\"fld7oBtl3iiHNHqoJ\",\"chartOption\":\"line\",\"color\":\"blue\",\"hex\":\"#1283da\"}],\"chartTitle\":\"Grafico criado em 11/15/2020, 4:15:04 AM\"}" }, "xPatientEmail": "[email protected]", "xTypeaheadValue": "Elle Gold ([email protected])", "xSelectedValue": "[{\"label\":\"Elle Gold ([email protected])\",\"id\":\"[email protected]\",\"name\":\"Elle Gold\",\"email\":\"[email protected]\"}]" }

Uwaga: Wszystkie dane zawarte powyżej oraz dane zawarte w poniższych animacjach nie są rzeczywistymi danymi pacjenta.

Oto spojrzenie na wynik końcowy:

Animowany wyświetlacz interfejsu użytkownika Airtable.

A co z czcionką?

Aby filtrować według pacjenta, potrzebowaliśmy sposobu, aby wybrać pacjenta, a następnie przefiltrować rekordy na podstawie tego pacjenta. W tej sekcji przyjrzymy się, jak to zostało osiągnięte.

Jeśli chodzi o typeahead, react-bootstrap-typeahead był łatwym wyborem, ponieważ jedynymi krokami, które pozostały, było przygotowanie opcji dla typeaheadu, zmieszanie go z wejściem Airtable do stylizacji i ładowania bootstrapu oraz kilkoma innymi stylami dla naszego menu. Upuszczanie komponentów z twoich ulubionych bibliotek komponentów do aplikacji Airtable nie jest tak proste, jak w typowym tworzeniu stron internetowych React; jednak jest tylko kilka dodatkowych kroków, aby wszystko wyglądało tak, jak oczekiwałeś.

Oto wynik końcowy:

Animowany plik GIF prezentujący funkcję filtrowania według pacjenta.

Aby renderować dane wejściowe Airtable i zachować spójność wszystkich naszych stylów, React-bootstrap-typeahead zawiera właściwość renderInput. Zobacz więcej na temat modyfikowania renderowania komponentu tutaj.

W przypadku stylów bootstrap oraz w celu zastąpienia naszych pozycji menu użyto następujących dwóch narzędzi z Airtable:

  • loadCSSFromString
  • loadCSSFromURLAsync

Zobacz frontend.js w spisie treści, aby zobaczyć fragment implementacji z wyprzedzeniem.

Ta linia była używana do ładowania ładowania początkowego globalnie:

 // frontend/index.js loadCSSFromURLAsync('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css');

Zauważysz pewną dodaną logikę dotyczącą takich rzeczy, jak obsługa zmian stylu najechania kursorem lub zmiana stylizacji linków ( <a></a> ), aby uzyskać znajomy wygląd i działanie programu bootstrap. Obejmuje to również obsługę ustawiania wartości konfiguracji globalnej dla wyprzedzenia i filtrowania rekordów, dzięki czemu jeśli użytkownik opuści swój pulpit nawigacyjny, odświeży swoją stronę lub zechce udostępnić ten pulpit nawigacyjny innym, aplikacja zachowa wybranego pacjenta na pulpicie nawigacyjnym Aplikacja. Pozwala to również użytkownikom zainstalować wiele kopii tej samej aplikacji obok siebie w tym samym panelu Airtable Dashboard z różnymi wybranymi pacjentami lub z różnymi wykresami.

Należy pamiętać, że pulpit nawigacyjny w Airtable jest również dostępny dla wszystkich użytkowników Base, więc te niestandardowe instalacje aplikacji na pulpicie nawigacyjnym będą filtrowane do tych samych pacjentów i wykresów, niezależnie od tego, którzy użytkownicy jednocześnie patrzą na pulpit nawigacyjny.

Podsumujmy, co już omówiliśmy:

  1. Airtable umożliwia współpracę w Airtable zarówno użytkownikom nietechnicznym, jak i technicznym.
  2. Typeform jest wyposażony w integrację Airtable, która umożliwia użytkownikom nietechnicznym mapowanie wyników Typeform do Airtable.
  3. Aplikacje Airtable zapewniają potężny sposób na doładowanie bazy Airtable, niezależnie od tego, czy wybierasz ją z rynku, czy tworzysz niestandardową aplikację.
  4. Deweloperzy mogą szybko rozszerzyć Airtable w prawie każdy sposób, jaki można sobie wyobrazić dzięki tym aplikacjom. Zaprojektowanie i wdrożenie naszego przykładu zajęło tylko trzy tygodnie (oczywiście z ogromną pomocą istniejących bibliotek).
  5. System #TAG# może być używany do modyfikowania pulpitu nawigacyjnego bez konieczności wprowadzania zmian w kodzie przez programistów. Są na to lepsze i gorsze przypadki użycia. Pamiętaj, aby ograniczyć uprawnienia do roli twórcy, jeśli korzystasz z tej strategii.
  6. Korzystanie z Global Config umożliwia programistom utrwalanie danych w ramach instalacji aplikacji. Połącz to ze swoją strategią zarządzania stanem, aby zasiać dane dla swoich komponentów.
  7. Nie oczekuj przeciągania i upuszczania komponentów z innych bibliotek i projektów bezpośrednio do Twojej aplikacji Airtable. Style można ładować za pomocą narzędzi loadCSSFromString i loadCSSFromURLAsync dostarczonych przez Airtable.

Zabezpieczenie na przyszłość

Użyj bardziej wyrafinowanego oprogramowania pośredniego

Dzięki Typeform i Airtable konfiguracja mapowania pytań do kolumn jest łatwa i opłacalna.

Jest jednak jedna duża wada: jeśli masz ankietę zawierającą ponad 100 pytań zmapowanych do Airtable i musisz zmodyfikować mapowanie, musisz usunąć całe mapowanie i zacząć od nowa. To oczywiście nie jest idealne, ale w przypadku bezpłatnej integracji możemy sobie z tym poradzić.

Inne opcje to integracja Zapier (lub podobna) do zarządzania danymi między Typeform i Airtable. Następnie możesz zmodyfikować mapowanie dowolnego pytania do dowolnej kolumny bez zaczynania od zera. Musiałoby to również uwzględniać własne względy kosztowe.

Mamy nadzieję, że niektóre wnioski wyciągnięte i przekazane tutaj pomogą innym, którzy chcą tworzyć rozwiązania z Airtable.

Na koniec możesz sprawdzić istotę plików omówionych w tym artykule.