SQL functions in Google Sheets to fetch data from Datasette
開發者展示 3 種 Datasette 串接試算表的方法,成功突破 API 授權標頭限制。
- 運用 importdata 函式與 URL 編碼,可直接載入資料庫匯出的 CSV。
- 透過試算表內建的命名函式封裝邏輯,能大幅提升 SQL 查詢的易讀性。
- 利用 Apps Script 注入 API 授權標頭,可成功存取受保護的私人資料庫。
Simon Willison 發布了 3 種將 Datasette 資料庫與雲端試算表串接的模式。透過在儲存格中執行 SQL 函式,開發者能繞過繁瑣的匯出流程實現即時抓取。此方法涵蓋了原生公式應用,更解決了需傳遞 API 憑證的技術瓶頸。
提取 Datasette 資料至雲端試算表的 3 種模式
知名開源開發者 Simon Willison 近期投入了一項技術實驗,旨在尋找能將 Datasette(將 SQLite 轉化為 API 的工具)中的資料,直接提取至 Google Sheets(雲端試算表)的最佳實作方式。對於仰賴試算表進行資料分析的使用者而言,若能直接在儲存格中寫入 SQL 語法並獲得結果,將大幅降低跨平台資料同步的摩擦力。
回顧 Willison 的技術筆記,他將這些串接模式歸納為 3 種具體的技術途徑。這些方法從基礎的試算表內建公式,一路延伸到需要處理 HTTP 標頭的進階程式碼開發。無論是面對公開發布的開放資料集,還是受到存取控制保護的私人資料庫,開發者都能從中找到相對應的解決方案。
運用 importdata 函式建立基礎資料連線
在第一種模式中,Willison 選用了試算表內建的 importdata() 函式作為核心驅動引擎。這個原生公式的主要功能是透過指定的 URL 網址,抓取並解析 CSV 格式的資料。由於 Datasette 本身具備強大的資料格式輸出能力,使用者只需將 SQL 查詢字串進行 URL 編碼,並附加在目標資料庫的網址後方,即可生成一組回傳 CSV 格式的端點,並由 importdata() 瞬間載入結果。
為了進一步提升這套方法的使用者體驗,他提出了第二種改良模式:利用試算表的「命名函式」功能來進行封裝。直接在儲存格中組裝冗長的 URL 網址不僅容易出錯,對協作者也不友善。透過自訂命名函式,開發者可以隱藏底層的網址拼接過程,使用者只需輸入簡潔的 SQL 語法,系統即會自動在背景完成資料抓取。
Apps Script 解決 API 授權標頭的技術限制
儘管原生公式足以應付公開資料的抓取,但在面對私人資料庫時,這套機制立刻顯露技術限制。當開發者需要向執行個體發送帶有 API 授權標記的 HTTP 請求時,importdata() 完全無法支援自訂 HTTP 標頭。這意味著一旦資料庫設定了存取權限,原生公式就會遭到伺服器拒絕。
為解決身分驗證的瓶頸,Willison 引入了第三種解決方案:撰寫 Google Apps Script(Google 雲端腳本環境)。透過在試算表後台建立自訂腳本,開發者能建構完整的 HTTP 請求,並精準在標頭注入 API Token,成功通過安全驗證。腳本接收 CSV 字串後,會將其解析寫入指定的儲存格範圍內,徹底解決了 API 授權問題。
整合 3 種連線模式的公開示範試算表
作為概念驗證的最後一步,Willison 在部落格中附上了一份公開的範例試算表。這份文件實際展現了 importdata() 的基本用法,並展示如何設定與呼叫自訂的命名函式。開發者也能直接打開該文件的腳本編輯器,查看如何使用 JavaScript 處理帶有授權標頭的網路請求邏輯。
這種將輕量級關聯式資料庫與雲端文件深度整合的嘗試,反映了追求工具鏈解耦與無伺服器存取的技術趨勢。開發者無須架設中介伺服器,只需依賴試算表本身的運算資源,就能讓資料庫成為即時的後端資料庫。
結合原生公式與 Apps Script 突破授權限制,試算表即可化身為強大的資料查詢終端。