Limity wykorzystania

Interfejs Google Sheets API to usługa współdzielona, dlatego stosujemy limity i ograniczenia, aby chronić ogólną wydajność systemu Google Workspace dla wszystkich użytkowników.

Limity przydziału

Interfejs Sheets API nie ma sztywnych limitów rozmiaru żądania do interfejsu API, ale użytkownicy mogą napotkać limity różnych komponentów przetwarzania, które nie są kontrolowane przez Arkusze Google. Aby przyspieszyć przetwarzanie żądań, zalecamy maksymalny rozmiar ładunku wynoszący 2 MB.

Interfejs Sheets API ma limity na minutę, które są odnawiane co minutę. Na przykład limit żądań odczytu wynosi 300 na minutę na projekt. Jeśli Twoja aplikacja wyśle 350 żądań w ciągu minuty, dodatkowe 50 żądań przekroczy limit i wygeneruje odpowiedź z 429: Too many requests kodem stanu HTTP. W takiej sytuacji należy użyć algorytmu wzrastającego czasu do ponowienia. Po minucie możesz ponownie wykonywać żądania.

W tabeli poniżej znajdziesz limity żądań:

Limity
Żądania odczytu
Na minutę na projekt 300
Za minutę na użytkownika na projekt 60
Żądania zapisu
Na minutę na projekt 300
Za minutę na użytkownika na projekt 60

Szczegółowe informacje o ograniczeniach dotyczących plików znajdziesz w artykule Pliki, które możesz przechowywać na Dysku Google.

Zachowanie i ograniczenia

Podczas pracy z ((sheets_api_short)) pamiętaj o tych zachowaniach i ograniczeniach, które wpływają na Twoje limity:

  • Żądania odczytu to wywołania dowolnej metody, która pobiera dane z arkusza kalkulacyjnego, np. get lub search. Żądania zapisu to wywołania dowolnej metody, która zmienia arkusz kalkulacyjny, np. update, clear lub copyTo.

  • Użytkownicy mogą przesyłać wiele próśb jednocześnie, o ile nie przekraczają limitu. Każde żądanie zbiorcze, w tym każde żądanie podrzędne, jest liczone jako jedno żądanie do interfejsu API w ramach limitu wykorzystania.

  • Wszystkie żądania dotyczące Arkuszy są stosowane niepodzielnie. Oznacza to, że jeśli jakiekolwiek żądanie jest nieprawidłowe, cała aktualizacja się nie powiedzie i żadne zmiany (potencjalnie zależne) nie zostaną zastosowane.

  • Istnieje maksymalny limit czasu przetwarzania 1 żądania do interfejsu API. Jeśli Arkusze przetwarzają żądanie dłużej niż 180 sekund, zwracają błąd przekroczenia limitu czasu.

  • Jeśli nie przekroczysz limitów minutowych, nie ma ograniczeń co do liczby żądań, które możesz wysłać w ciągu dnia.

Rozwiązywanie błędów związanych z limitami czasowymi

W przypadku wszystkich błędów związanych z czasem (maksymalnie N żądań na X minut) zalecamy, aby kod przechwytywał wyjątek i używał skróconego wzrastającego czasu do ponowienia, aby urządzenia nie generowały nadmiernego obciążenia.

Wzrastający czas do ponowienia to standardowa strategia obsługi błędów w aplikacjach sieciowych. Algorytm wzrastającego czasu do ponowienia ponawia żądania z wykładniczo rosnącym czasem oczekiwania między żądaniami, aż do maksymalnego czasu do ponowienia. Jeśli żądania nadal są odrzucane, ważne jest, aby opóźnienia między żądaniami z czasem się zwiększały, aż żądanie zostanie zaakceptowane.

Przykładowy algorytm

Algorytm wzrastającego czasu do ponowienia ponawia żądania wykładniczo, zwiększając czas oczekiwania między ponownymi próbami aż do maksymalnego czasu do ponowienia. Na przykład:

  1. Wyślij żądanie do interfejsu Google Sheets API.
  2. Jeśli prośba się nie powiedzie, poczekaj 1 + random_number_milliseconds i spróbuj ponownie.
  3. Jeśli żądanie się nie powiedzie, poczekaj 2 + random_number_milliseconds i spróbuj ponownie.
  4. Jeśli prośba się nie powiedzie, poczekaj 4 + random_number_milliseconds i spróbuj ponownie.
  5. I tak dalej, aż do maximum_backoff razy.
  6. Kontynuuj oczekiwanie i ponawianie prób do osiągnięcia maksymalnej liczby prób, ale nie wydłużaj czasu oczekiwania między próbami.

gdzie:

  • Czas oczekiwania wynosi min(((2^n)+random_number_milliseconds), maximum_backoff), a wartość n jest zwiększana o 1 w przypadku każdej iteracji (żądania).
  • random_number_milliseconds to losowa liczba milisekund mniejsza lub równa 1000. Pomaga to uniknąć sytuacji, w których wielu klientów jest synchronizowanych przez pewne zdarzenie i wszyscy ponawiają próbę w tym samym czasie, wysyłając żądania w zsynchronizowanych falach. Wartość random_number_milliseconds jest ponownie obliczana po każdej próbie ponowienia.
  • maximum_backoff wynosi zwykle 32 lub 64 sekundy. Odpowiednia wartość zależy od przypadku użycia.

Klient może ponawiać próby po osiągnięciu czasu maximum_backoff. Ponowne próby po tym momencie nie muszą wydłużać czasu do ponowienia. Jeśli na przykład klient używa czasu maximum_backoff 64 sekund, po osiągnięciu tej wartości może ponawiać próbę co 64 sekundy. W pewnym momencie należy uniemożliwić klientom ponawianie prób w nieskończoność.

Czas oczekiwania między ponownymi próbami i liczba ponownych prób zależą od przypadku użycia i warunków sieciowych.

Ceny

Korzystanie z interfejsu Google Sheets API jest bezpłatne. Przekroczenie limitów liczby żądań nie wiąże się z dodatkowymi opłatami, a na Twoim koncie nie zostaną naliczone żadne płatności.

Poproś o zwiększenie limitu

W zależności od wykorzystania zasobów w projekcie możesz poprosić o dostosowanie limitu. Wywołania interfejsu API przez konto usługi są traktowane jako korzystanie z jednego konta. Wysłanie wniosku o zwiększenie limitu nie gwarantuje jego zatwierdzenia. Zatwierdzenie próśb o dostosowanie limitu, które znacznie zwiększają jego wartość, może potrwać dłużej.

Nie wszystkie projekty mają takie same limity. W miarę upływu czasu i zwiększania wykorzystania Google Cloud wartości limitów mogą wymagać zwiększenia. Jeśli spodziewasz się znacznego wzrostu wykorzystania, możesz z wyprzedzeniem poprosić o zmianę limitów na stronie Limity w konsoli Google Cloud.

Więcej informacji znajdziesz w tych materiałach: