Lockify API 未提取全年数据

Lockify API is not extracting the Data for Whole year

提问人:Spark 提问时间:11/11/2023 最后编辑:Brian Tompsett - 汤莱恩Spark 更新时间:11/11/2023 访问量:44

问:

我已经使用 Lockify API 将近两年了。我曾经定期通过 API 提取数据以获得实时见解,一切正常。但是,最近,我遇到了一个问题,它停止了全年的数据提取。我检查了Lockify API,但它似乎没有变化,我无法弄清楚为什么会出现此问题。

为了排除故障,我转向 Clockify Reports 并从那里导出数据进行比较。事实证明,问题出在代码中,但我正在努力识别和修复它。我希望有人可以帮助我解决这个问题。

以下是我正在使用的 API 格式。

Dim httpCaller  As MSXML2.XMLHTTP60, body As String
Set httpCaller = New MSXML2.XMLHTTP60

body = "{""dateRangeStart"": ""2023-01-01T00:00:00.000"", " & vbLf & _
       " ""dateRangeEnd"": ""2023-12-31T23:59:59.000"", " & vbLf & _
       " ""detailedFilter"": {""page"": 1,""pageSize"": 1000}} "

' Debug.Print body
httpCaller.Open "POST", "https://reports.api.clockify.me/v1/workspaces/Key/reports/detailed"
httpCaller.setRequestHeader "X-Api-Key", "API_Key"
httpCaller.setRequestHeader "Content-Type", "application/json"
httpCaller.send body
Excel VBA 时钟

评论

0赞 Tim Williams 11/11/2023
“它停止了一整年的数据提取”——它开始做什么而不是你预期的?
0赞 Spark 11/11/2023
嘿,谢谢你的回复!我正在提取 2023 年 1 月至 2023 年 11 月的数据,因此它跳过了 1 月和 2 月的数据。
0赞 Tim Williams 11/11/2023
你有超过 1000 个结果吗?
0赞 Spark 11/11/2023
我想是的!它的1000多个:(这就是原因

答:

3赞 Adam DS 11/11/2023 #1

在键中,您使用静态值作为值。这意味着它只会返回最新的 1000 条记录。您需要创建一个循环来确定您的日期范围内总共有多少条记录。detailedFilterpage

每个响应中都有一个调用的字段,您可以计算该字段并迭代地遍历页面。例如,如果值为 3250,则需要重复 API 调用,其中该值会迭代增加为值 1,2 和 3。entriesCountentriesCountpage

不包括较旧的时间表的原因是 Clockify 返回从最新到最旧的时间表,因此它返回 1000 个最新的时间表。

评论

0赞 Spark 11/11/2023
如果它不打扰你可以,请分享一个如何实现这一目标的例子。我正在尝试根据 entriesCount 获取总页数,但在 DS @Adam这一行totalPages = Application.WorksheetFunction.Ceiling(json("entriesCount") / 1000, 1)compile error
0赞 Adam DS 11/11/2023
您能否确认已正确解析 JSON 响应?我相信顶级JSON对象被命名为“totals”,然后“entriesCount”位于“totals”对象中。
0赞 Spark 11/11/2023
我认为当我尝试解析它时,条目名称存在问题,出现编译错误。