微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Smartsheet-如何查找工作表中的总页数?

如何解决Smartsheet-如何查找工作表中的总页数?

我想用这样的查询https://api.smartsheet.com/2.0/sheets/{sheetId}?rowsModifiedSince={date}&pageSize=20&page=10逐页获取所有记录。 但是响应没有totalPages或类似参数。如何在工作表中查找总页数?

当然,我可以检查当前页面上的行数。如果它等于'pageSize'参数,则存在下一张纸。这似乎不正确,因为工作表上的行可以是行数的倍数。

解决方法

获取工作表响应包含一个totalRowCount参数,该参数指定工作表中的总行数。您可以通过将totalRowCount值除以除以计算页面总数(即,您需要提交以获取工作表中所有行的获取工作表请求的总数)您在请求查询字符串中指定的pageSize值,并将结果四舍五入到下一个整数。

例如,如果:

  • 您的请求指定了pageSize=20(例如https://api.smartsheet.com/2.0/sheets/{sheetId}?pageSize=20&page=1)。

  • 获取工作表响应中的totalRowCount参数的值为105

这意味着您需要提交6个获取工作表请求(每个请求指定pageSize=20),以检索工作表中的所有行(因为totalRowCount / {{ 1}} = 105/20 = 5.25,四舍五入到下一个整数是6)。前5个响应(页面)中的每一个将包含20行,而第6个响应将包含其余5行。

**更新#1 **

如果您指定查询字符串参数(例如pageSize),则上述策略将不起作用-因为rowsModifiedSince的值始终表示工作表中的总行数,不一定等于满足您通过查询字符串参数指定的条件的行数。在这种情况下,您可以继续提交获取工作表请求,每次增加totalRowCount参数的值,直到收到page属性为空的响应为止数组(如下面的响应示例所示)-这表明您请求的上一页是结果的最后一页。

rows

**更新#2 **

不幸的是,我发现Smartsheet的行为与上述方法不一致。

  • 如果最后显示结果 的页面是整页结果 ,则对下一页结果的请求响应将返回一个空{ {1}}数组。例如,如果有4行符合我指定的条件,并且在每个请求中都指定了{ "id": 3932034054809476,... "rows": [] } ,则前两页将分别包含2行,而第三页(即,在请求中由rows[]发出的请求)查询字符串)将返回一个空的pageSize=2数组。

  • 但是,如果最后显示结果的页面不是结果的 整页 ,则对下一页结果的请求响应将返回最后一页的结果。例如,如果3行符合我指定的条件,并且我在每个请求中指定pageSize=2&page=3,则第一页包含2行,第二页包含1行,第三页(即,以{查询字符串中的{1}}将包含与结果的前一页/后一页相同的行,即为rows[]返回的同一行。

不幸的是,这意味着您可能必须采取类似跟踪在每个响应中收到的行pageSize=2值的操作(如果您收到包含行pageSize=2&page=3的响应,已经收到过,这表明您之前请求的页面实际上是结果的最后一页。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。