如何获取所有用户的列表,包括他们最后一次登录
How to get the list of all users including their last login
我要为我的组织制作一个关于员工使用智能表许可证的仪表板。
通常,获取此类信息的请求如下(根据文档):
https://api.smartsheet.com/2.0/users?include=lastLogin
但是,此请求每页恰好显示 100 个结果。我只想得到所有的结果。
文档指出必须将另一个参数添加到请求中才能获得完整的结果列表。请求变为:
https://api.smartsheet.com/2.0/users?include=lastLogin&includeAll=true
它有效,但是我只获得了没有上次登录的用户的完整列表,这让我回到了我的问题:如何获取所有用户的列表,包括他们上次登录?
因此,根据 List Users 操作的文档,指定 include=lastLogin
查询字符串参数将只包括每个 User
对象的 lastLogin
属性当响应中返回的结果数为 100 或更少时响应。 (FWIW,我怀疑 Smartsheet 实现了这种行为,因为如果单个 API 请求试图为数百或数千用户获取 lastLogin
值,它会对 API 性能产生不利影响.)
不过好消息 -- 您仍然可以获得所需的信息 -- 只是需要您付出一些额外的努力(和代码)。您需要为每页结果提交单独的 API 请求(即,包括 include=lastLogin
查询字符串参数和 page
查询字符串参数以指定页码您希望通过每个请求检索的结果),然后将所有响应的结果加入到您写入仪表板的单个列表中。初始 List Users
响应中 totalPages
属性的值将告诉您总页面数(默认情况下每个页面有 100 个用户,如果您愿意,这是您一次可以请求的最大用户数每个 User
对象包含的 lastLogin
属性)可用——即,您需要发出多少请求才能让所有用户 和 lastLogin
每个属性。
例如,您的第一个请求是:
GET https://api.smartsheet.com/2.0/users?include=lastLogin
...让我们假设响应如下所示:
{
"pageNumber": 1,
"pageSize": 100,
"totalPages": 3,
"totalCount": 100,
"data": [
...
]
}
此响应将包含前 100 个用户 -- 但响应告诉您它只是三页可用结果的第一页(即,响应中 totalPages
属性的值为 3
) -- 因此您需要再发出两个请求才能检索到完整的用户集。
因此,接下来您发出第二个请求,这次包括 page
参数以指定您想要第 2 页:
GET https://api.smartsheet.com/2.0/users?include=lastLogin&page=2
...响应 returns 结果的第二页如下所示:
{
"pageNumber": 2,
"pageSize": 100,
"totalPages": 3,
"totalCount": 100,
"data": [
...
]
}
此响应将包含接下来的 100 个用户——即三个可用页面的第二页——您需要再发出一个请求才能检索到完整的用户集。
所以最后,您发出了第三个请求,这次包括 page
参数以指定您想要第 3 页:
GET https://api.smartsheet.com/2.0/users?include=lastLogin&page=3
...并且响应包含结果的第三页(在此示例中为最后一页),看起来像这样(其中 totalCount
属性 的值是一个数值>= 1 且 <= 100,表示响应中的用户数):
{
"pageNumber": 3,
"pageSize": 100,
"totalPages": 3,
"totalCount": 52,
"data": [
...
]
}
现在,因为响应中 pageNumber
属性 的值等于响应中 totalPages
属性 的值,你知道这是最后一组用户,您无需再发出任何请求。
在这 3 个请求之间,您现在已检索到完整的用户集(以及每个用户的 lastLogin
属性值)。
我要为我的组织制作一个关于员工使用智能表许可证的仪表板。 通常,获取此类信息的请求如下(根据文档):
https://api.smartsheet.com/2.0/users?include=lastLogin
但是,此请求每页恰好显示 100 个结果。我只想得到所有的结果。
文档指出必须将另一个参数添加到请求中才能获得完整的结果列表。请求变为:
https://api.smartsheet.com/2.0/users?include=lastLogin&includeAll=true
它有效,但是我只获得了没有上次登录的用户的完整列表,这让我回到了我的问题:如何获取所有用户的列表,包括他们上次登录?
因此,根据 List Users 操作的文档,指定 include=lastLogin
查询字符串参数将只包括每个 User
对象的 lastLogin
属性当响应中返回的结果数为 100 或更少时响应。 (FWIW,我怀疑 Smartsheet 实现了这种行为,因为如果单个 API 请求试图为数百或数千用户获取 lastLogin
值,它会对 API 性能产生不利影响.)
不过好消息 -- 您仍然可以获得所需的信息 -- 只是需要您付出一些额外的努力(和代码)。您需要为每页结果提交单独的 API 请求(即,包括 include=lastLogin
查询字符串参数和 page
查询字符串参数以指定页码您希望通过每个请求检索的结果),然后将所有响应的结果加入到您写入仪表板的单个列表中。初始 List Users
响应中 totalPages
属性的值将告诉您总页面数(默认情况下每个页面有 100 个用户,如果您愿意,这是您一次可以请求的最大用户数每个 User
对象包含的 lastLogin
属性)可用——即,您需要发出多少请求才能让所有用户 和 lastLogin
每个属性。
例如,您的第一个请求是:
GET https://api.smartsheet.com/2.0/users?include=lastLogin
...让我们假设响应如下所示:
{
"pageNumber": 1,
"pageSize": 100,
"totalPages": 3,
"totalCount": 100,
"data": [
...
]
}
此响应将包含前 100 个用户 -- 但响应告诉您它只是三页可用结果的第一页(即,响应中 totalPages
属性的值为 3
) -- 因此您需要再发出两个请求才能检索到完整的用户集。
因此,接下来您发出第二个请求,这次包括 page
参数以指定您想要第 2 页:
GET https://api.smartsheet.com/2.0/users?include=lastLogin&page=2
...响应 returns 结果的第二页如下所示:
{
"pageNumber": 2,
"pageSize": 100,
"totalPages": 3,
"totalCount": 100,
"data": [
...
]
}
此响应将包含接下来的 100 个用户——即三个可用页面的第二页——您需要再发出一个请求才能检索到完整的用户集。
所以最后,您发出了第三个请求,这次包括 page
参数以指定您想要第 3 页:
GET https://api.smartsheet.com/2.0/users?include=lastLogin&page=3
...并且响应包含结果的第三页(在此示例中为最后一页),看起来像这样(其中 totalCount
属性 的值是一个数值>= 1 且 <= 100,表示响应中的用户数):
{
"pageNumber": 3,
"pageSize": 100,
"totalPages": 3,
"totalCount": 52,
"data": [
...
]
}
现在,因为响应中 pageNumber
属性 的值等于响应中 totalPages
属性 的值,你知道这是最后一组用户,您无需再发出任何请求。
在这 3 个请求之间,您现在已检索到完整的用户集(以及每个用户的 lastLogin
属性值)。