提问人:Spark 提问时间:11/11/2023 最后编辑:Brian Tompsett - 汤莱恩Spark 更新时间:11/11/2023 访问量:44
Lockify API 未提取全年数据
Lockify API is not extracting the Data for Whole year
问:
我已经使用 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
答:
3赞
Adam DS
11/11/2023
#1
在键中,您使用静态值作为值。这意味着它只会返回最新的 1000 条记录。您需要创建一个循环来确定您的日期范围内总共有多少条记录。detailedFilter
page
每个响应中都有一个调用的字段,您可以计算该字段并迭代地遍历页面。例如,如果值为 3250,则需要重复 API 调用,其中该值会迭代增加为值 1,2 和 3。entriesCount
entriesCount
page
不包括较旧的时间表的原因是 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
我认为当我尝试解析它时,条目名称存在问题,出现编译错误。
评论