【问题标题】:Retrieving all responses from Typeform using Response API使用响应 API 从 Typeform 检索所有响应
【发布时间】:2019-05-13 21:54:16
【问题描述】:

我正在尝试使用此处记录的“之前”和“之后”查询字符串参数从 Typeform 检索所有响应:https://developer.typeform.com/responses/walkthroughs/#use-query-parameters-to-retrieve-specific-data

我宁愿不使用“since”和“until”,因为我一天可能有超过 1000 个响应(文档指出在这种情况下应该使用 before/after。)基于令牌的方法似乎无论如何都要更清洁。

我的问题是我永远无法检索与第一次调用中返回的“total_items”值一致的一组结果。也许我的期望不正确?我最终得到一个比那个值少几百的值。代码摘录如下。我在第一次调用中包含了一个空的“之前”查询字符串参数,因为文档表明该参数的存在会更改排序以与其流程顺序(而不是提交顺序)保持一致。

async getAllResults(formId) {
    const opts = {
      ...this._opts,
      url: `https://api.typeform.com/forms/${formId}/responses?page_size=1000&before`
    }

    let results = (await axios.request(opts)).data
    let allResults = results.items

    const totalResponseCount = results.total_items

    while (results.items.length > 0) {
      const lastToken = _.last(results.items).token
      results = (await axios.request({ ...opts, url: opts.url + `=${lastToken}` })).data
      allResults = _.concat(allResults, results.items)
    }

    // Fails
    assert.ok(allResults.length === totalResponseCount)

    return allResults
}

【问题讨论】:

    标签: typeform


    【解决方案1】:

    我尝试自己运行代码,并且看起来总是在最后添加一个额外的结果。在您的 allResults 数组中使其成为重复结果,并将长度减一。

    while 循环不应该一直持续到allResults.length === totalResponseCount 吗?

    所以代码是:

    while (allResults.length != totalResponseCount && results.items.length > 0) {
      const lastToken = _.last(results.items).token
      results = (await axios.request({ ...opts, url: opts.url + `=${lastToken}` })).data
      allResults = _.concat(allResults, results.items)
    }
    

    你怎么看?

    【讨论】:

    • 好吧,我一直在循环直到 results.items.length === 0 因为最终你会从 typeform 得到如下所示的响应。但就我而言,当 total_items 报告的计数为 ~4100 时,上面的代码将获得约 3800 个结果。 { "total_items": 0, "page_count": 0, "items": [] }
    • 会不会是部分回复没有完成?添加&completed=true,结果匹配吗?
    • 这是个好主意 - 但使用 &completed=true 实际上只会产生与其他两个不同的数字。感谢 Nicolas 对此的想法。
    猜你喜欢
    • 2017-05-09
    • 2019-12-27
    • 2016-11-04
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多