Google Sheets API 是共用服務,我們設定配額和限制,是為了保護所有使用者的 Google Workspace 系統整體效能。
配額限制
雖然 Sheets API 對 API 要求的大小沒有硬性限制,但使用者可能會遇到不同處理元件的限制,而這些元件並非由 Google 試算表控管。為加快要求速度,建議酬載大小上限為 2 MB。
Sheets API 有每分鐘配額,且每分鐘都會補充。舉例來說,每個專案每分鐘的讀取要求數上限為 300。如果應用程式在一分鐘內傳送 350 個要求,額外的 50 個要求就會超出配額,並產生 429: Too many requests HTTP 狀態碼回應。如果發生這種情況,請使用指數輪詢演算法。1 分鐘後,您就可以再次執行要求。
下表詳細列出要求限制:
| 配額 | |||||
|---|---|---|---|---|---|
| 讀取要求數 |
|
||||
| 寫入要求數 |
|
||||
如需檔案限制的詳細資訊,請參閱「可存放在 Google 雲端硬碟的檔案」。
行為和限制
使用 ((sheets_api_short)) 時,請注意下列會影響配額的行為和限制:
讀取要求是指呼叫任何可從試算表擷取資料的方法,例如
get或search。寫入要求是指對任何會變更試算表的方法發出的呼叫,例如update、clear或copyTo。只要在配額限制內,使用者可以同時提交多個要求。每個批次要求 (包括任何子要求) 都會計為一個 API 要求,並計入用量限制。
系統會以不可分割的形式套用所有 Google 試算表要求。也就是說,如果任何要求無效,整個更新就會失敗,且不會套用任何 (可能相依的) 變更。
處理單一 API 要求的時間上限為 10 分鐘。如果 Google 試算表處理要求超過 180 秒,要求就會傳回逾時錯誤。
只要不超過每分鐘配額,每天可提出的要求數就沒有上限。
解決時間配額錯誤
對於所有時間相關錯誤 (每 X 分鐘最多 N 個要求),我們建議您的程式碼擷取例外狀況,並使用截斷指數輪詢,確保裝置不會產生過多負載。
指數輪詢是網路應用程式的標準錯誤處理策略。指數輪詢演算法會以指數方式重試要求,並將每次要求之間的等待時間逐漸增加至最大輪詢時間,如果要求仍未成功,請務必隨著時間增加要求之間的延遲時間,直到要求成功為止。
演算法範例
指數輪詢演算法會以指數方式重試要求,並將每次重試之間的等待時間逐漸增加至最大輪詢時間,例如:
- 對 Google Sheets API 提出要求。
- 如果要求失敗,請等待 1 +
random_number_milliseconds秒後再重試要求。 - 如果要求失敗,請等待 2 +
random_number_milliseconds秒後再重試要求。 - 如果要求失敗,請等待 4 +
random_number_milliseconds秒後再重試要求。 - 依此類推,時間上限為
maximum_backoff。 - 繼續等待和重試,直到重試次數達特定上限,但不再增加每次重試之間的等待時間。
其中:
- 等待時間為
min(((2^n)+random_number_milliseconds), maximum_backoff),n會在每次疊代 (要求) 時增加 1。 random_number_milliseconds是小於或等於 1,000 的隨機毫秒數。這種設定有助於避免多個用戶端在特定情況下全部同步進行處理並同時重試,導致同步傳送每一波要求。random_number_milliseconds的值會在每次重試要求後重新計算。maximum_backoff通常是 32 或 64 秒,適合的值視用途而異。
用戶端達到 maximum_backoff 時間上限後,還是可以繼續重試。但接下來的重試工作就不需繼續增加輪詢時間。舉例來說,如果用戶端使用的 maximum_backoff 時間上限是 64 秒,達到這個值之後,用戶端就可以維持在每 64 秒重試一次的頻率。到了特定時間點後,用戶端應停止無限重試。
重試之間的等待時間和重試次數,應視用途及您的網路狀況而定。
定價
使用 Google Sheets API 不必另行付費。超出配額要求限制不會產生額外費用,也不會向您的帳戶收費。
申請提高配額
您可以依據專案的資源用量,要求調整配額。服務帳戶的 API 呼叫會視為使用單一帳戶。我們不保證一定能核准您提出的配額調整要求。如果配額調整要求會大幅提高配額值,可能需要較長時間才能通過核准。
並非所有專案的配額都相同。隨著您使用 Google Cloud 的時間越長,配額值可能需要增加。如果預期用量將大幅攀升,可以透過 Google Cloud 控制台的「配額」頁面主動要求調整配額。
如要進一步瞭解相關內容,請參閱下列資源: