如何使用 Power Query 从 Toggl API 中提取数据?

Posted

技术标签:

【中文标题】如何使用 Power Query 从 Toggl API 中提取数据?【英文标题】:How to pull data from Toggl API with Power Query? 【发布时间】:2019-12-03 08:26:38 【问题描述】:

连接 API 时的第一个计时器。我正在尝试使用我的 API 令牌从 Toggl 提取数据,但我无法让凭据正常工作。我试图复制 Chris Webb (https://blog.crossjoin.co.uk/2014/03/26/working-with-web-services-in-power-query/) 的方法,但我无法让它发挥作用。这是我的 M 代码:

let
    Source = Web.Contents(
 "https://toggl.com/reports/api/v2/details?workspace_id=xxxxx&client=xxxxxx6&billable=yes&user_agent=xxxxxxx",
 [
  Query=[ #"filter"="", #"orderBy"=""],
  ApiKeyName="api-token"
 ])
in
    Source

之后,我将我的 API 令牌输入到访问 Web 内容窗口中的 Web API 方法中,但我收到一个错误,即无法验证凭据。这是 Toggl API 规范: https://github.com/toggl/toggl_api_docs/blob/master/reports.md

【问题讨论】:

【参考方案1】:

Web.Contents 函数接收两个参数:url + options

options 中,您可以定义 headersapi_key 以及其他可查询的属性,例如:

let
    baseUrl = "https://toggl.com/",
    // the token part can vary depending on the requisites of the API
    accessToken = "Bearer" & "insert api token here"
    options = [
                Headers = [Authorization = accessToken, #"Content-Type" = 
                  "application/Json"], RelativePath ="reports/api/v2/details", Query = 
                  [workspace_id=xxxxx, client=xxxxxx6 , billable=yes, user_agent=xxxxxxx]
              ]
    Source = Web.Contents(baseUrl, options)
    // since Web.Contents() doesn't parse the binaries it fetches, you must use another 
    // function to see if the data was retreived, based on the datatype of the data
    parsedData = Json.Document(Source)
in
    parsedData

baseUrl 是最小的 url 并且永远不会改变; RelativePath 是 URL 中第一个“?”之前的下一部分。 Query 记录是您将要查询的所有属性定义为记录的位置。

这通常是格式,但请检查您要查询的 API 的文档,看看它是否相似。

【讨论】:

以上是关于如何使用 Power Query 从 Toggl API 中提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何提取金蝶软件数据到power query

如何使用 Power Query 的 Web.Contents 发布多部分/表单数据

从 Power Query 中的单元格值中提取数据类型?

如何从 Power Query 的不同表中的 2 列中获取数据以汇总为 1 列?

powerquery可以上载部分表格吗

power query如何实现增加空白行