SmartSheet Java API getSheet, но только некоторые строки - PullRequest
0 голосов
/ 14 января 2020

Я использую SmartSheet API (Java SDK) в приложении, которое используется моей компанией внутри компании, и обнаружил, что первоначальный запуск приложения занимает все больше и больше времени. Я пришел к выводу, что по крайней мере часть этой задержки заключается в получении всего листа из SmartSheet и последующей фильтрации всех строк, которые я ранее обработал. Есть ли способ для меня получить все, кроме тех строк, которые я уже обработал? У меня есть столбец «номер магазина» в SmartSheet, и я могу добавить список магазинов, которые я уже обработал, чтобы отфильтровать список.

Но, насколько я могу судить, сделать это невозможно. Я ошибаюсь? Если да, как мне это сделать?

Я нашел документы SmartShet API , но они не дают четкого объяснения того, как использовать дополнительные и исключающие параметры. Все примеры SmartSheet, которые я могу найти, устанавливают оба значения в нуль. Я надеялся, что исключения позволят мне исключить строки, которые я знаю, я обработал, но я не могу найти четкую документацию о том, как использовать эту функцию.

1 Ответ

0 голосов
/ 14 января 2020

К сожалению, невозможно запросить данные листа с помощью API Smartsheet, как если бы вы запросили таблицу в базе данных - т. Е. Не существует запроса API, который мог бы работать, как SELECT * FROM Sheet WHERE store_number NOT IN (1, 3, 5).

In В общем, параметры include и exclude обеспечивают способ увеличить ответ (т. е. использовать параметр include, чтобы вернуть больше данных, чем обычно возвращается по умолчанию) или уменьшить (т. е. использовать exclude параметр не возвращает данных, которые обычно возвращаются по умолчанию). Например, метаданные вложения не будут включены по умолчанию, но если вы укажете в запросе параметр ?include=attachments, он будет включен.

Задание параметра exclude=filteredOutRows позволяет влиять на то, какие строки возвращаются в ответе, но для того, чтобы этот параметр соответствовал описанному вами сценарию, на листе должен быть установлен фильтр, который в настоящее время применяется, какие фильтры из строк вы не хотите быть возвращены. Кажется сомнительным, что это было бы верно в вашем сценарии (и не представляется возможным программно устанавливать / обновлять фильтры листов через API), поэтому это не кажется особенно полезным для вас.

** ОБНОВЛЕНИЕ ДО ДОБАВИТЬ ИНФОРМАЦИЮ ОБ ОТЧЕТАХ **

Еще один вариант, который вы могли бы рассмотреть. Вы можете вручную создать отчет (т. Е. Через пользовательский интерфейс Smartsheet), который запрашивает лист, и указать критерии для этого отчета, который исключает указанный набор номеров магазинов из результатов отчета. Затем вы можете изменить свое приложение таким образом, чтобы оно получало данные через отчет вместо того, чтобы получать данные непосредственно с листа. Единственный улов здесь заключается в том, что невозможно создавать или обновлять отчеты с помощью API Smartsheet, поэтому вам придется создавать отчет вручную (с помощью интерфейса Smartsheet), а затем периодически обновлять отчет вручную (с помощью интерфейса Smartsheet). добавить дополнительные номера магазинов, которые вы хотите исключить из результатов. Не идеально, но в зависимости от объема данных, которые вы пытаетесь исключить из ответа, и от того, как часто набор номеров магазинов исключает изменения, этот подход может быть жизнеспособным для вас.

...