使用VBA从Clockify导出数据遇HTTP 405错误求助
解决Clockify API调用HTTP 405方法不允许的问题
问题原因
Clockify的/reports/detailed接口不支持GET请求,必须使用POST方法。你收到的405错误就是因为请求方法不符合接口要求——该接口需要通过POST传递筛选参数(即使是获取全部数据,也需要提交一个合法的JSON请求体)。
修改后的代码
将请求方法改为POST,并传递空的JSON请求体(或自定义筛选参数):
Public Sub GetAllClockifyDetailedReports() Dim httpCaller As MSXML2.XMLHTTP60 Set httpCaller = New MSXML2.XMLHTTP60 ' 空请求体表示获取默认配置下的全部数据,可根据需求修改 Dim requestBody As String requestBody = "{}" With httpCaller ' 替换*****为你的实际工作区ID .Open "POST", "https://reports.api.clockify.me/v1/workspaces/*****/reports/detailed", False .setRequestHeader "X-Api-Key", CLOCKIFY_API_KEY .setRequestHeader "Content-Type", "application/json" .send requestBody End With ' 输出响应结果 If httpCaller.Status = 200 Then Debug.Print httpCaller.responseText ' 可在此添加将响应数据写入Excel工作表的逻辑 Else Debug.Print "请求失败:状态码 " & httpCaller.Status & vbCrLf & httpCaller.responseText End If Set httpCaller = Nothing End Sub
自定义筛选(可选)
如果需要指定时间范围、分组等条件,修改requestBody为对应的JSON结构即可,示例:
{ "dateRangeStart": "2024-01-01T00:00:00Z", "dateRangeEnd": "2024-06-30T23:59:59Z", "summaryFilter": { "groups": ["PROJECT", "TASK"] }, "hydrated": true }
内容的提问来源于stack exchange,提问作者Spark
相关产品推荐
相关产品推荐

