我在公司内部使用的应用程序中使用SmartSheet API(Java SDK),并且发现该应用程序的首次启动花费的时间越来越长。我得出的结论是,至少部分延迟是从SmartSheet获取整个工作表,然后过滤掉我之前处理过的所有行。除了已经处理的那些行,我是否有办法获取所有内容?我在SmartSheet中有一个“商店编号”列,可以提供已经处理过以过滤该列表的商店列表。

但是据我所知没有办法做到这一点。我错了吗?如果是这样,我该怎么做?

我已经找到了SmartShet API docs,但是它们并没有明确说明如何使用includes和excludes可选参数。我可以找到的所有SmartSheet示例都将两个值都设置为null。我希望排除会给我一种排除我知道已经处理过的行的方法,但是我找不到关于如何使用此功能的清晰文档。

最佳答案

不幸的是,无法像使用查询数据库中的表那样使用Smartsheet API查询工作表数据-即,没有可以发出类似于SELECT * FROM Sheet WHERE store_number NOT IN (1, 3, 5)的功能的API请求。

通常,includeexclude参数提供一种使响应变大(即,使用include参数返回的数据比默认情况下通常返回的数据更多)或较小(即,使用参数以不返回通常默认情况下返回的数据)。例如,默认情况下将不包括附件元数据-但是,如果您在请求中指定exclude参数,则会将其包括在内。

指定?include=attachments参数可让您影响响应中返回的行-但要使此参数满足您所描述的情况,工作表将必须当前应用一个过滤器,以过滤掉您不希望查询的行不想被退回。似乎怀疑这种情况在您的情况下是否正确(并且似乎不可能通过API以编程方式设置/更新工作表过滤器),因此这对您似乎并不特别有用。

**更新以添加有关报告的信息**

您可能会考虑的另一种选择。您可以手动创建报告(即通过Smartsheet UI)以查询工作表,并为该报告指定条件,该条件将报告结果中指定的商店编号排除在外。然后,您可以将应用更改为gets data via the Report,而不是直接从工作表中获取数据。这里唯一的问题是无法通过Smartsheet API创建或更新报告-因此,您必须手动(通过Smartsheet UI)创建报告,然后定期(通过Smartsheet UI)手动更新报告添加要从结果中排除的其他商店编号。这并不理想,但是取决于您尝试从响应中排除的数据量以及排除更改的商店编号集的频率,这种方法可能对您可行。

10-08 01:54