#python #smartsheet-api
#python #smartsheet-api
Вопрос:
Я пытаюсь выполнить итерацию по всем строкам на листе, но кажется, что простое использование .rows ограничено возвратом 100 элементов.
for temp_row in inventory.rows:
x = 1
print x #X will always return <= 100
Независимо от того, сколько элементов у меня там.
Что я делаю не так?
Редактировать: просто чтобы уточнить, я пытаюсь что-то сделать с каждой строкой, а не считать их, это всего лишь пример того, как я заметил, что он захватывает только 100 строк.
Комментарии:
1. вы пробовали
len(inventory.rows)
?
Ответ №1:
include_all
Параметры не являются частью get_sheet()
.
Параметр вPython SDK 2.0 page_size
и по умолчанию 100
.
my_sheet = smartsheet.Sheets.get_sheet(sheet_id, page_size=5000)
где sheet_id
идентификатор вашего листа.
Если у вас уже есть объект sheet, вы можете использовать
my_sheet.total_row_count
чтобы получить количество строк и использовать это вместо 5000
.
Комментарии:
1. да, в старых документах есть
pageSize=
, но вы правыpage_size=
, это тот, который работает сейчас.
Ответ №2:
По умолчанию get_sheet вернет страницу со 100 строками. Включите флаг: includeAll=true
для возврата всех строк.
Для получения дополнительной информации см. Документацию по подкачке.
Ответ №3:
Похоже, что, возможно, SDK использует подкачку при выполнении операции получения листа — т. Е. Он возвращает только первую страницу результатов в ответе, которая по умолчанию равна 100 строкам. Как описано в документах API, размер страницы по умолчанию равен 100 строкам в ответе Get Sheet, если в запросе не указано иное. (В документации см. Описание параметров pageSize и page.)
Я бы посоветовал вам просмотреть SDK на предмет возможности указывать размер страницы и / или страницу при вызове операции получения листа.
Ответ №4:
Важно отметить, что при выполнении запроса к Smartsheet API напрямую, а не через Python SDK, ответом по умолчанию является включение всех строк листа без необходимости включения page
pageSize
параметров или.