【问题标题】:SmartSheet Java API getSheet but only some of the rowsSmartSheet Java API getSheet,但只有一些行
【发布时间】:2020-01-15 02:02:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: java smartsheet-api


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • Kim,感谢您的确认 - 我担心会出现这种情况。不幸的是,数据变化太频繁,无法使报告选项有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多