我在公司内部使用的应用程序中使用 SmartSheet API (Java SDK),并且发现应用程序的初始启动时间越来越长。我得出的结论是,至少部分延迟是从 SmartSheet 获取整个工作表,然后过滤掉我之前处理过的所有行。有没有办法让我获得除了我已经处理过的行之外的所有内容?我在 SmartSheet 中有一个“商店编号”列,可以输入我已经处理过的商店列表来过滤该列表。
但据我所知,没有办法做到这一点。我错了吗?如果是这样,我该怎么做?
我找到了SmartShet API docs ,但它们没有明确解释如何使用包含和排除可选参数。我能找到的所有 SmartSheet 示例都将这两个值设置为 null。我希望排除能给我一种方法来排除我知道已处理的行,但我找不到有关如何使用此功能的明确文档。
最佳答案
遗憾的是,无法像查询数据库中的表一样使用 Smartsheet API 查询工作表数据 - 即,您无法发出像 SELECT * FROM Sheet WHERE store_number NOT IN (1, 3, 5)
这样的 API 请求。 .
一般来说,include
和exclude
参数提供了一种使响应更大(即使用 include
参数返回比默认情况下通常返回的数据更多的数据)或更小的响应(即使用 exclude
参数不返回)的方法> 通常默认返回的数据)。例如,默认情况下不会包含附件元数据 - 但如果您指定 ?include=attachments
请求中的参数,它将被包含在内。
指定exclude=filteredOutRows
参数允许您影响在响应中返回哪些行 - 但为了使该参数满足您所描述的场景,工作表必须具有当前应用的过滤器,该过滤器可以过滤掉您不想返回的行。在您的场景中这是否正确似乎值得怀疑(并且似乎不可能通过 API 以编程方式设置/更新工作表过滤器),因此这对您来说似乎不是特别有用。
** 更新以添加有关报告的信息 **
您可能会考虑的另一个选择。您可以手动创建一个查询工作表的报告(即通过 Smartsheet UI),并为该报告指定条件,以从报告结果中排除指定的一组商店编号。然后你可以更改你的应用程序,使其 gets data via the Report而不是直接从工作表中获取数据。这里唯一的问题是无法通过 Smartsheet API 创建或更新报告 - 因此您必须手动创建报告(通过 Smartsheet UI),然后定期手动更新报告(通过 Smartsheet UI)添加您想要从结果中排除的其他商店编号。并不理想,但根据您尝试从响应中排除的数据量以及排除更改的商店编号集的频率,此方法可能对您可行。
关于java - SmartSheet Java API getSheet 但仅限部分行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59737050/