首页 > 解决方案 > SmartSheet Java API getSheet,但只有一些行

问题描述

我在公司内部使用的应用程序中使用 SmartSheet API (Java SDK),发现应用程序的初始启动时间越来越长。我得出的结论是,至少部分延迟是从 SmartSheet 获取整个工作表,然后过滤掉我之前处理过的所有行。除了我已经处理的那些行之外,我有没有办法得到所有的东西?我在 SmartSheet 中有一个“商店编号”列,可以输入我已经处理过的商店列表来过滤列表。

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

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

标签: javasmartsheet-api

解决方案


不幸的是,无法像查询数据库中的表那样使用 Smartsheet API 查询工作表数据——也就是说,您无法发出类似SELECT * FROM Sheet WHERE store_number NOT IN (1, 3, 5).

通常,includeandexclude参数提供了一种使响应更大(即,使用该include参数返回比默认情况下通常返回的更多数据)或更小的方法(即,使用该exclude参数不返回通常由默认)。例如,默认情况下不会包含附件元数据——但如果您?include=attachments在请求中指定参数,它将被包含在内。

指定exclude=filteredOutRows参数允许您影响响应中返回的行 - 但要使此参数满足您所描述的场景,工作表必须当前应用一个过滤器来过滤掉您不希望的行被退回。似乎怀疑这在您的场景中是否正确(并且似乎无法通过 API 以编程方式设置/更新工作表过滤器),因此这对您来说似乎不是特别有用。

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

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


推荐阅读