míg az adatbázis-technológia és más eszközök hosszú utat tettek meg, még mindig nehéz legyőzni a szerény táblázatkezelő sokoldalúságát és intuitivitását. Bár érzékeny, kritikus alkalmazásokhoz, például a COVID-19 betegadatok tárolásához nem tanácsos használni őket, az a tény, hogy mindenki tudja, hogyan kell használni a táblázatot, azt jelenti, hogy kiválóan alkalmasak kisebb, keresztfunkcionális projektekhez, ahol egy nem fejlesztőnek esetleg meg kell vizsgálnia vagy szerkesztenie kell az adatokat.
ebben az útmutatóban megmutatom, hogyan kell használni a Google táblázatokat adatbázisként, kiegészítve egy API felülettel, amely HTTP-n keresztül érhető el. Autokódot fogunk használni, egy csomópontot.js API fejlesztési platform és szerkesztő beépített automatikus kiegészítéssel, egy egyszerű alkalmazás telepítéséhez és a Google hitelesítési folyamatának kezeléséhez. Meg fogom vizsgálni a Google Táblázatok korlátait is, beleértve a méretezhetőséget, és ahol van értelme összetettebb alternatívákat keresni.
# Returns all people in the database whose names start # with "bil", case-insensitive$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/name/istartswith/?query=bil'
az induláshoz nem kell más, mint egy Google-fiók és egy ingyenes Autocode-fiók. Gyerünk!
először klónoznia kell a sablon saját példányát Google Sheet ide kattintva, majd nyomja meg a gombot sablon használata a jobb felső sarokban. Ez hozzáadja a minta táblázatot a személyes Google-Fiókjához.
miután ezt megtette, kattintson ide a starter alkalmazás megnyitásához az Autocode alkalmazásban. Ha szeretné, keresse meg a forráskódot, majd telepítse az alkalmazást az Autocode fiókjába a zöld gomb megnyomásával. Amikor a rendszer kéri a Google-lap összekapcsolását, kövesse a folyamat utasításait a Google-Fiók összekapcsolásához, majd válassza ki az imént klónozott táblázatot.
ezt követően az alkalmazásnak készen kell állnia az indulásra! Próbáljon meg hozzáférni néhány végponthoz az URL-eken keresztül, és nézze meg, mi kerül vissza/mi történik az új táblázatkezelő adatbázissal. Megnézheti az alábbiEndpoints
szakaszt, például hívásokat.
korlátozások
Ez a tl;dr könnyű volt, igaz? Akkor miért nem épül fel minden a Google táblázatokra?
bár egy 30 másodpercet igénybe vevő backend beállítása rendkívül vonzó, van néhány nyilvánvaló korlátozás. A táblázat, mint a fent leírt adatbázis, természetesen nem támogatja a több táblát vagy a sorok közötti kapcsolatokat. Nincs koncepció egy adott oszlop, tranzakciók, beépített biztonsági mentések vagy titkosítás típusainak érvényesítésére, így az érzékeny / kritikus adatokat (például a COVID-19 betegadatait) valószínűleg máshol lehet a legjobban tárolni.
a skálázhatóság szempontjából a Google Táblázatok kemény határa 5 000 000 cella (beleértve az üres cellákat is). Amikor megpróbáltam ezt ellenőrizni egy ilyen sok értékkel rendelkező táblázat létrehozásával, azonban jelentős problémákat tapasztaltam a teljesítményben a küszöb előtt:
a tömeges műveletek, mint például a nagyszámú sejt beillesztése, lelassultak, majd 1 millió cellánál kezdtek meghibásodni. A navigáció általában lassú volt.
az API-hívások kezdeményezésével kapcsolatos kísérleteim hasonló eredményeket hoztak. Úgy tűnt, hogy a lekérdezési sebesség lineárisan skálázódik a cellák számával:
a lekérdezések gyakorlatilag lassúvá váltak az 500 000 cellajel körül, de még mindig 2 másodperc alatt voltak egy 100 000 cellás lekérdezéshez. Ezért, ha néhány százezer cellánál nagyobb adatkészletre számít, valószínűleg okos lenne egy skálázhatóbb opciót választani.
hogyan működik
amikor összekapcsolja a klónozott Google-lapot az alkalmazásával, majd telepíti a fiókjával, az Autocode automatikusan kezeli az alkalmazás és a Google-fiók közötti hitelesítést az alkalmazás tokenjével (lásd aconst lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN})
sort az összes végpont tetején).
a tényleges lekérdezések esetében minden végpont csomópontot tartalmaz.js kód, amely meghív egy módszert a googlesheets – ből.lekérdezés API. Ezek az API-k egy range
nevű paramétert vesznek fel A1 jelöléssel, amely megfelel a táblázat azon részének, amelyet az API-hívásnak az adatbázis részeként figyelembe kell vennie.
let queryResult = await lib.googlesheets.query.select({ range: `A:E`, bounds: 'FULL_RANGE', where: });
arange
értékeA:E
lényegében rövidítése “használja az összes sort oszlopok a-E a táblázatban, mint az én adatbázis”. A lekérdezés az adott tartomány minden oszlopának első sorát értelmezi az adott oszlop értékeinek mezőnéveként. A klónozott sablon alapján a fenti lekérdezés ellenőrzi az A oszlop összes értékét (Name
néven) a lekérdezésnek megfelelő értékkel rendelkező sorok számára.
Ezek az API-hívások a KeyQL lekérdezési nyelvet használják. Ha érdekel egy mély merülés, akkor nézd meg további példákat.
hívás végpontok
mint korábban említettük, ezek a végpontok HTTP-n keresztül érhetők el, így hívásokat kezdeményezhet velük fetch
cURL
, vagy bármilyen más HTTP kliens segítségével. A webböngészőt közvetlenül is használhatja:
és még ugyanazt a lib-node csomópont csomagot is használhatja, amelyet a végpontok használnak a Google Táblázatok API-k hívásához:
a végpontok válaszolnak a GET vagy POST kérésekre. A paramétereket a lekérdezési kérések lekérdezési stringjéből, a POST kérések kérési törzséből elemezzük. Az egyértelműség érdekében minden végpont alapértelmezett paraméterekkel rendelkezik. Az alábbiakban példákat talál az egyes végpontokra.
végpontok
funkciók/kiválasztás/feladat/tartalmaz.js
Ez a végpont egy contains
KeyQL lekérdezés példája. Olyan sorokat keres a linkelt Google-lapon, ahol a Job
mező tartalmaz egy alszöveget (nagybetűérzékeny), amely megfelel a query
paraméternek. A mintalapból visszatér:
$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/job/contains/?query=ist'
functions/select/born_on/date_gt.js
Ez a végpont egy date_gt
KeyQL lekérdezés példája. Olyan sorokat keres a csatolt Google-lapon, ahol a Born On
mező a query
paraméter után van, formázva 2000/01/01
. A mintalapból visszatér:
$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/born_on/date_gt/?query=2000/01/01'
functions/select/name/istartswith.js
Ez a végpont egy istartswith
KeyQL lekérdezés példája. Olyan sorokat keres a linkelt Google-lapon, ahol a Name
mező a query
paraméterrel kezdődik (kisbetűérzékeny). A mintalapból visszatér:
$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/select/name/istartswith/?query=bil'
funkciók/beszúrás.js
Ez a végpont egy példa egy beszúrási lekérdezésre. A bemeneti paramétereket a googlesheets fieldsets
paraméterébe továbbítja.lekérdezés.beszúrás
API. Például a Bill Gates
hozzáadásához a táblázathoz a következő kérést teheti meg (minden paraméter kisbetűs):
$ curl --request POST \ --header "Content-Type: application/json" \ --data '{"name":"Bill Gates","job":"CEO","fictional":false,"bornOn":"10/28/1955"}' \ --url 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/insert/'
Megjegyzés: Az autocode API-k nem válaszolnak kizárólag az egyik HTTP-módszerre a másikkal szemben, hanem a leíró elnevezésre támaszkodnak, hogy elkerüljék a funkcionalitással kapcsolatos félreértéseket.
funkciók / frissítés.js
Ez a végpont egy frissítési lekérdezés példája. Beállítja aUpdated At
azon személyek mezőjét, akiknek a neve pontosan megegyezik aname
paraméterrel, és frissíti a többi mezőt a bemeneti paraméterek alapján. Használja a googlesheets.lekérdezés.API frissítése.
például a Job
mező Bilbo Baggins
a Ring Bearer
a táblázatban a következő kérést teheti meg (minden paraméter kisbetűs):
$ curl --request POST \ --header "Content-Type: application/json" \ --data '{"name":"Bilbo Baggins","job":"Ring Bearer"}' \ --url 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/update/'
megjegyzés: ez több sort is érinthet, ha egynél több sor felel meg a lekérdezési feltételeknek.
funkciók / törlés.js
Ez a végpont egy törlési lekérdezés példája. Eltávolítja sorok
az emberek, akiknek a neve pontosan egyezik a name
paraméter. Használja a googlesheets.lekérdezés.API törlése. Például aBilbo Baggins
eltávolításához a táblázatból a következő kérést teheti:
$ curl --request GET --url \ 'https://YOUR_USERNAME.api.stdlib.com/gsheets-database-example/delete/?name=Bilbo%20Baggins'
Megjegyzés: Ez több sort is érinthet, ha egynél több sor felel meg a lekérdezési feltételeknek.
köszönöm!
Ha bármilyen kérdése vagy visszajelzése van, a legjobb, ha csatlakozik az Autocode community Slack csatornához. Meghívót kaphat a webhely felső sávjában található közösség fülről. Azt is elérheti, hogy nekem közvetlenül a Twitter @Hacubu.
ha naprakészen szeretné tartani az Autocode legújabb verzióját, kövesse az @AutocodeHQ parancsot. Boldog hackelés!