Лимиты на использование

API Google Sheets — это общедоступный сервис, и мы применяем квоты и ограничения для защиты общей производительности системы Google Workspace для всех пользователей.

Ограничения квот

Хотя в Google Sheets API нет жестких ограничений по размеру запроса, пользователи могут столкнуться с ограничениями со стороны различных компонентов обработки, не контролируемых Google Sheets. Для ускорения запросов мы рекомендуем использовать максимальный размер полезной нагрузки в 2 МБ.

API Google Sheets имеет квоты, которые пополняются каждую минуту. Например, существует лимит запросов на чтение в 300 запросов в минуту на проект. Если ваше приложение отправляет 350 запросов за минуту, дополнительные 50 запросов превышают квоту и генерируют ответ с кодом состояния HTTP 429: Too many requests . В этом случае следует использовать алгоритм экспоненциальной задержки . Через 1 минуту вы можете снова выполнять запросы.

В таблице ниже подробно указаны лимиты запросов:

Квоты
Прочитать запросы
Поминутно на проект 300
Поминутная оплата за пользователя за проект 60
Написать запросы
Поминутно на проект 300
Поминутная оплата за пользователя за проект 60

Подробную информацию об ограничениях на количество файлов см. в разделе «Файлы, которые можно хранить в Google Диск» .

Поведение и ограничения

При работе с ((sheets_api_short)) обратите внимание на следующие особенности и ограничения, влияющие на ваши квоты:

  • Запросы на чтение — это вызовы любых методов, которые извлекают данные из электронной таблицы, например, get или search . Запросы на запись — это вызовы любых методов, которые изменяют данные в электронной таблице, например, update , clear или copyTo .

  • Пользователи могут отправлять несколько запросов одновременно, если они не превышают лимит квоты. Каждый пакетный запрос , включая любые подзапросы, учитывается как один API-запрос в рамках вашего лимита использования.

  • Все запросы к таблицам применяются атомарно. То есть, если какой-либо запрос недействителен, то все обновление считается неудачным, и никакие (потенциально зависимые) изменения не применяются.

  • Существует максимальное ограничение по времени обработки одного API-запроса. Если Sheets обрабатывает запрос более 180 секунд, запрос возвращает ошибку тайм-аута.

  • При условии соблюдения поминутных лимитов, количество запросов, которые вы можете отправить в день, не ограничено.

Устранение ошибок, связанных с временными квотами.

Для всех ошибок, связанных со временем (максимум N запросов за X минут), мы рекомендуем, чтобы ваш код перехватывал исключение и использовал усеченную экспоненциальную задержку , чтобы ваши устройства не создавали чрезмерную нагрузку.

Экспоненциальная задержка — это стандартная стратегия обработки ошибок в сетевых приложениях. Алгоритм экспоненциальной задержки повторяет запросы, используя экспоненциально увеличивающиеся промежутки времени ожидания между запросами, вплоть до максимального времени задержки. Если запросы по-прежнему не удаются, важно, чтобы задержки между запросами увеличивались со временем, пока запрос не будет успешно выполнен.

Пример алгоритма

Алгоритм экспоненциальной задержки повторяет запросы в экспоненциальном порядке, увеличивая время ожидания между повторными попытками до максимального значения задержки. Например:

  1. Отправьте запрос к API Google Таблиц.
  2. Если запрос не удался, подождите 1 + random_number_milliseconds и повторите запрос.
  3. Если запрос не удался, подождите 2 + random_number_milliseconds и повторите запрос.
  4. Если запрос не удался, подождите 4 + random_number_milliseconds и повторите запрос.
  5. И так далее, вплоть до maximum_backoff времени задержки.
  6. Продолжайте ждать и повторять попытки до определенного максимального количества раз, но не увеличивайте интервал ожидания между повторными попытками.

где:

  • Время ожидания составляет min(((2^n)+random_number_milliseconds), maximum_backoff) , при этом n увеличивается на 1 для каждой итерации (запроса).
  • random_number_milliseconds — это случайное число миллисекунд, меньшее или равное 1000. Это помогает избежать ситуаций, когда множество клиентов синхронизированы из-за какой-либо ситуации и все они одновременно повторяют запрос, отправляя его синхронизированными волнами. Значение random_number_milliseconds пересчитывается после каждого повторного запроса.
  • maximum_backoff обычно составляет 32 или 64 секунды. Подходящее значение зависит от конкретного случая использования.

Клиент может продолжать попытки после достижения значения maximum_backoff time. После этого значения увеличение backoff time не требуется. Например, если клиент использует значение maximum_backoff time равное 64 секундам, то после достижения этого значения он может повторять попытки каждые 64 секунды. В какой-то момент клиентам следует запретить бесконечные повторные попытки.

Время ожидания между повторными попытками и количество повторных попыток зависят от сценария использования и условий сети.

Цены

Использование API Google Sheets предоставляется бесплатно. Превышение лимитов запросов не влечет за собой дополнительных расходов, и с вашего счета не взимается плата.

Запросить увеличение квоты

В зависимости от объема используемых ресурсов вашего проекта, вам может потребоваться запросить корректировку квоты. Вызовы API, выполняемые сервисным аккаунтом, считаются использованием одного аккаунта. Подача заявки на корректировку квоты не гарантирует ее одобрения. Запросы на корректировку квоты, которые значительно увеличат ее значение, могут обрабатываться дольше.

Не все проекты имеют одинаковые квоты. По мере того, как вы будете все больше использовать Google Cloud, значения ваших квот могут потребовать увеличения. Если вы ожидаете значительного увеличения использования в будущем, вы можете заблаговременно запросить корректировку квот на странице «Квоты» в консоли Google Cloud.

Для получения более подробной информации ознакомьтесь со следующими ресурсами: