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

Пагинация

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

Параметры​

  • offset — с какой строки начинать (от 0).
  • limit — сколько строк вернуть. Ограничивается серверным максимумом (1000). Если не указан, сервер вернёт до максимума.
curl "https://app.coverse.team/api/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/api/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 строк — подробнее в разделе «Как устроены диапазоны».