【发布时间】:2020-04-03 17:34:33
【问题描述】:
我在 Zapier 中有一个 GET 请求,使用此 API 从预订系统 MindBody 获取瑜伽课程列表; https://developers.mindbodyonline.com/PublicDocumentation/V6#get-classes
Zapier 确实具有自动获取“所有”结果的功能,即使最大限制为 200,Zap 也需要获取下一页结果。默认情况下,我可以获得 200 个结果的限制,偏移量为 0。
我需要 Zapier 获取前 200 个,将偏移量增加 200,得到 200-400 个结果,依此类推。最终结果可能是 650 个结果全部组合在 Zap 中,然后我可以在另一个任务中使用(计数、求和、查找等)
如何使用 Zapier Code 任务使用这些参数逐步循环/获取 JSON 列表中的所有项目:
响应正文中返回的分页信息示例:
https://developers.mindbodyonline.com/PublicDocumentation/V6#pagination
{ “分页响应”:{ “请求限制”:10, “RequestedOffset”:20, “页面大小”:10, “总成绩”:128 }, “类”:[ . . . ] }
今天在 Zapier 中的示例 GET 和响应;
输入样本数据(获取请求)
json_key:访问次数 展开:是的 标题: 内容类型:应用程序/json 站点编号:xxx API 密钥:xxx 姓名:xxx 网址:https://api.mindbodyonline.com/public/v6/client/clientvisits 数据: 限制:200 开始日期:2015-01-01T00:00:00 结束日期:2099-01-01T00:00:00 客户编号:xxx 偏移量:0 as_json:没有
返回的样本数据
访问: 1: 类 ID:xxx LastModifiedDateTime:0001-01-01T00:00:00Z 化妆:假 约会ID:0 服务名称: 预约性别偏好:无 结束日期时间:2019-12-11T08:15:00 客户编号:xxx 延迟取消:假 行动:无 服务编号: 站点编号:xxx 登录:真 开始日期时间:2019-12-11T07:15:00 员工编号:x 位置编号:x 网络注册:假 产品编号: 预约状态:无 编号:xxx 姓名:xxx 2: 类 ID:xxx LastModifiedDateTime:0001-01-01T00:00:00Z 化妆:假 约会ID:0 服务名称: 预约性别偏好:无 结束时间:2019-12-11T09:30:00 客户编号:xxx 延迟取消:假 行动:无 服务编号: 站点编号:xxx 登录:真 开始日期时间:2019-12-11T08:30:00 员工编号:xxx 位置编号:xx 网络注册:假 产品编号: 预约状态:无 编号:xxx 姓名:xxx
分页响应: 总结果:2 页面大小:2 请求偏移量:0 请求限制:
2019 年 12 月 19 日更新: 1) 呼叫端点; https://api.mindbodyonline.com/public/v6/client/clientvisits 带有查询参数; 开始日期:2015-01-01T00:00:00 结束日期:2099-01-01T00:00:00 偏移量:0 客户编号:XXX 限制:200 标头; 姓名:xxx 站点编号:xxx API 密钥:xxx 内容类型:application/json
Postman 中的示例响应: { “分页响应”:{ “请求限制”:200, “请求偏移量”:0, “页面大小”:2, “总结果”:2 }, “访问”:[ { “约会ID”:0, "AppointmentGenderPreference": "无", “约会状态”:“无”, “ClassId”:xxx, “客户 ID”:“xxx”, "开始日期时间": "2019-04-27T09:45:00", "EndDateTime": "2019-04-27T10:45:00", “身份证”:xxx, "LastModifiedDateTime": "0001-01-01T00:00:00Z", “延迟取消”:假, “位置标识”:1, “化妆”:假, “名称”:“瑜伽巴雷”, “服务标识”:空, “登录”:是的, “员工编号”:xxx, “网络注册”:假, “行动”:“无” }, { “约会ID”:0, "AppointmentGenderPreference": "无", “约会状态”:“无”, “ClassId”:xxx, “客户 ID”:“xxx”, "开始日期时间": "2019-07-19T16:45:00", "EndDateTime": "2019-07-19T17:45:00", “身份证”:273726, "LastModifiedDateTime": "0001-01-01T00:00:00Z", “延迟取消”:假, “位置标识”:1, “化妆”:假, “名称”:“冥想”, “服务标识”:空, “登录”:是的, “员工编号”:xxx, “网络注册”:假, “行动”:“无” } ] }
如果 TotalResults = 201 或更多,则请求的偏移量应设置为 200 并再次循环,依此类推。我在响应中需要的唯一数据是“SignedIn”,如果所有 ClientVisits 都收集在一起,我可以在以后的步骤中计算或求和。希望这是有道理的!
【问题讨论】:
-
您是在 Developer 中执行此操作,还是通过 Zapier 的 Zap with Code 执行此操作?
-
代码。开发人员有分页,但根据 Zapier 支持,分页是用户必须手动调用的功能。听起来像代码,作为 Zap 中的一项任务,需要增加/循环分页请求。感谢您的帮助!
-
好的,所以我认为我们需要知道的内容如下。 1- 每个 Zap 步骤名称按顺序和其中的重要数据变量(图片可能更好)。 2 - 分页后数据的去向(第一个问题可能会回答这个问题)。即使您正确编码,某些 zaps 也不支持分页。 3 - 您目前拥有的 API 代码(使用虚拟名称作为令牌等私有信息)。
-
谢谢!这是 Zap 现在发生的事情并且有效。我将 'SignedIn:True' 算作最终结果。
-
我用示例 GET 和响应更新了问题。示例数据正在返回一个包含 2 个类及其属性的列表。您将在最后看到分页响应。如果 TOTALRESULTS 大于 200,则 GET 需要再次使用 OFFSET:200 来获得 200-400 的结果。
标签: javascript python json api zapier