指南

如何將 Google Sheets 連接到你的應用程式

要把 Google Sheets 連接到你的應用程式,請在 Google Cloud 專案中啟用 Google Sheets API,建立一個服務帳戶,把試算表分享給服務帳戶的電郵地址,並把它的金鑰儲存為伺服器端祕密值。之後,你的伺服器就可以使用 spreadsheets.values.get 讀取資料列,並使用 spreadsheets.values.append 新增資料列。如果用戶需要連接他們自己的試算表,就應改用 OAuth;如果試算表完全公開,只讀取的話使用簡單的 API 金鑰便足夠。

本指南涵蓋哪種方法適合、需要用到的呼叫、配額與注意事項,以及給 AI 應用程式生成工具的提示。Google 的細節以 2026 年 9 月 Google 開發者文件為準。

為什麼要連接試算表

常見原因包括:

  • **保留團隊的工作流程。**員工繼續在 Sheets 中編輯價目表或時間表,應用程式則負責顯示。
  • **在人們本來就會查看的地方收集資料。**新註冊、訂單或表單回覆都會以資料列的形式出現。
  • **報表。**把應用程式的資料匯出到試算表,供慣用試算表的人使用。
  • **過渡階段。**先從試算表開始,之後再遷移到真正的資料庫。請參閱如何把試算表變成應用程式。

選擇應用程式向 Google 登入的方式

Google 的憑證指南介紹了三種類型:

憑證可存取的內容最適合
API 金鑰只限公開可用的資料,例如設定為「任何持有連結的人」可查看的檔案讀取公開試算表
服務帳戶由你的應用程式擁有的資料,或特別分享給服務帳戶電郵的檔案你的應用程式讀寫你自己的試算表
OAuth 用戶端 ID用戶同意後,其自己檔案的存取權讓每位用戶連接他們自己的試算表

對大多數應用程式來說,服務帳戶是正確的選擇:只有一組由你擁有的憑證,而且只能存取你明確分享給它的試算表。

使用服務帳戶的逐步指南

  1. 建立或選擇一個 Google Cloud 專案,並啟用 Google Sheets API。
  2. 建立服務帳戶及其金鑰。金鑰是一個 JSON 檔案,請像對待密碼一樣小心保管。
  3. 分享試算表給服務帳戶的電郵地址:唯讀選檢視者,寫入則選編輯者。Google 的指南說明這要透過一般的分享畫面完成。
  4. 把金鑰儲存為祕密值,放在伺服器上,例如 GOOGLE_SERVICE_ACCOUNT_JSON,另外把試算表 ID(試算表網址中的一長串字元)儲存為 SHEET_ID。
  5. 從伺服器呼叫 API,使用 Google 為你所用語言提供的用戶端程式庫。
  6. 快取讀取結果:如果許多訪客都會看到相同的資料,就可以避免超出配額。

你會用到的呼叫

以下來自 Google 有關讀寫數值的指南:

方法作用
spreadsheets.values.get讀取一個範圍,例如 Leads!A1:E
spreadsheets.values.batchGet在一次要求中讀取多個範圍
spreadsheets.values.update寫入指定的範圍
spreadsheets.values.append在表格現有資料之後新增資料列

範圍使用 A1 記法。Google 提醒,沒有工作表名稱的範圍(例如 A1:B2)會套用到第一個工作表,因此最好明確寫出分頁名稱,以免有人重新排列分頁時出現意外。

RAW 與 USER_ENTERED

寫入時需要 valueInputOption:

  • RAW 會原樣儲存你傳送的內容,作為文字。=1+2 會被儲存為文字 =1+2。
  • USER_ENTERED 會把輸入視為在 Sheets 中手動輸入的內容:日期會變成日期,=1+2 會變成公式。

如果你寫入的是用戶在應用程式中輸入的文字,請使用 RAW。使用 USER_ENTERED 的話,有人可以提交一個公式,並在同事打開試算表時執行。

配額與錯誤

截至 2026 年 9 月,Google 的 Sheets API 限制頁面列出:

限制讀取要求寫入要求
每個專案每分鐘300300
每位用戶每個專案每分鐘6060

只要維持在每分鐘配額之內,就沒有每日上限。超出的話會返回 429: Too many requests,Google 建議使用截斷式指數退避:每次失敗後等待更長的時間,並加入隨機延遲,直至達到上限。單一要求如果超過 180 秒,就會逾時。

實際上,請不要每次載入頁面都呼叫 API。把試算表資料快取一分鐘或更久,用 batchGet 合併讀取,並在可能的情況下合併寫入。

方案與取捨

方法優點缺點
以試算表作為即時資料來源員工使用熟悉的工具;無需建立管理畫面配額限制、沒有逐列權限,而且把欄位重新命名就很容易令應用程式出錯
把試算表同步到資料庫讀取快速可靠;即使 Sheets 停止服務,應用程式仍可運作需要同步工作,並訂立以哪一邊為準的規則
以資料庫為先,匯出到試算表應用程式擁有資料;試算表只作報表在試算表中的編輯不會回寫
中間加入自動化工具簡單流程無需寫程式多一項訂閱;較難除錯

對於用戶眾多或資料敏感的應用程式,資料庫才是較好的真實來源。請參閱什麼是資料庫。

給 AI 生成工具的提示

讀取試算表:

在菜單頁面上顯示我們 Google 試算表中「Menu」分頁的內容。從伺服器使用 Google Sheets API,以服務帳戶存取,其 JSON 金鑰儲存在祕密值 GOOGLE_SERVICE_ACCOUNT_JSON 中,試算表 ID 則儲存在 SHEET_ID 中。讀取範圍 Menu!A2:D(名稱、描述、價格、分類)。把結果快取 5 分鐘。如果 API 失敗,就顯示最後一次快取的版本。絕不把金鑰傳送到瀏覽器。

寫入資料列:

當有人提交聯絡表單時,把它儲存到我們的資料庫,同時使用 spreadsheets.values.append 並以 valueInputOption RAW,在「Leads」分頁新增一列(日期、姓名、電郵、訊息)。如果 Google 返回 429,就以指數退避重試;如果仍然失敗,就把潛在客戶保留在資料庫中,稍後再重試。

常見錯誤

  • **忘記把試算表分享給服務帳戶的電郵。**即使金鑰正確,API 仍會返回權限錯誤。
  • **金鑰放在前端或儲存庫中。**JSON 金鑰可存取所有分享給它的試算表。請參閱如何保護 API 金鑰。
  • 對用戶輸入使用 USER_ENTERED,這會容許公式注入。
  • 每次請求都呼叫 API,結果在第一次流量高峰時就超出每分鐘配額。
  • **依賴欄位位置。**有人插入一欄後,應用程式就會讀取到錯誤的資料。應讀取標題列並以名稱對應,或鎖定標題。
  • 把試算表分享得比需要的範圍更廣。「任何持有連結的人」等於公開。
  • **把試算表當作多用戶資料庫。**同時寫入及權限缺失,會導致資料遺失或外洩。

檢查清單

  • 已啟用 Sheets API,並已建立服務帳戶
  • 試算表已以所需的最低權限分享給服務帳戶電郵
  • 金鑰及試算表 ID 已儲存為伺服器端祕密值
  • 所有呼叫都從伺服器發出
  • 範圍中使用了分頁名稱
  • 用戶提供的文字使用 RAW
  • 讀取已快取;429 已以退避處理
  • Sheets 不可用時,應用程式仍可優雅地降級運作
  • 已決定哪一邊是真正的來源

Mythex 中的 Google Sheets

Mythex 有兩種使用 Sheets 的方式。連接器會把你的 Google 帳戶連接到 Mythex,讓 agent 在你建構時使用,例如讀取試算表來建立儀表板。文件說明該憑證會保留在 Mythex 的連接服務中,不會進入你的程式碼(請參閱連接器,並核准 Google 要求的每一項權限)。至於已發布的應用程式要自行讀寫試算表,最可靠的方法就是本指南所述的做法:把服務帳戶金鑰儲存為專案祕密值,並由伺服器呼叫 Sheets API,請參閱整合任何 API。如果你已超出試算表的負荷,可要求 agent 把資料遷移到專案資料庫,並在其上建立儀表板。

常見問題

我的應用程式如何讀取私人的 Google 試算表?

常見做法是使用 Google Cloud 服務帳戶:啟用 Sheets API,建立服務帳戶及其金鑰,然後把試算表以檢視者或編輯者身分分享給服務帳戶的電郵地址。你的伺服器會使用以祕密值儲存的金鑰來呼叫 Sheets API。

我可以用 Google API 金鑰存取試算表嗎?

只適用於公開資料。Google 的憑證指南指出,API 金鑰只用於匿名存取公開可用的資料,例如任何持有連結的人都可查看的檔案。私人試算表則需要服務帳戶或 OAuth。

Google Sheets API 有什麼限制?

截至 2026 年 9 月,Google 列明每個專案每分鐘可進行 300 次讀取及 300 次寫入要求,並且每位用戶每個專案每分鐘可進行 60 次讀取及 60 次寫入,沒有每日上限。超出限制會返回 429 錯誤;Google 建議採用截斷式指數退避。

我應該把 Google Sheets 當作應用程式的資料庫嗎?

對於小型、流量低,而且人們也會直接在試算表中編輯資料的應用程式,它是可行的。但如果用戶眾多、寫入頻繁、記錄之間有關聯,或每位用戶的權限各有不同,真正的資料庫會更可靠。你仍然可以把資料匯出到試算表。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)