Перейти к основному содержимому

Пагинация

Чтение значений разбивается на страницы, чтобы большие диапазоны не приходили одним огромным ответом.

Параметры

  • offset — с какой строки начинать (от 0).
  • limit — сколько строк вернуть. Ограничивается серверным максимумом (1000). Если не указан, сервер вернёт до максимума.
curl "https://app.coverse.team/v1/documents/$DOCUMENT_ID/values/A1:A5000?offset=0&limit=1000" \
-H "Authorization: Bearer $TOKEN"

Что в ответе

В блоке pagination:

ПолеЗначение
offsetсмещение текущей страницы
limitприменённый лимит
totalвсего строк в диапазоне
returnedсколько строк вернулось в этом ответе
hasMoreесть ли ещё строки
nextOffsetoffset для следующей страницы (или null, если это конец)

Как листать до конца

Повторяйте запрос, подставляя nextOffset, пока hasMore не станет false.

import requests

BASE = "https://app.coverse.team/v1"
headers = {"Authorization": f"Bearer {TOKEN}"}

offset = 0
rows = []

while True:
r = requests.get(
f"{BASE}/documents/{doc_id}/values/A1:A5000",
params={"offset": offset, "limit": 1000},
headers=headers,
).json()["values"]

rows.extend(r["cells"])

if not r["pagination"]["hasMore"]:
break

offset = r["pagination"]["nextOffset"]

Открытые диапазоны (A:A, A1:A) тоже подчиняются пагинации и потолку в 1000 строк — подробнее в разделе «Как устроены диапазоны».