【问题标题】:Efficiently getting all completed tasks高效完成所有任务
【发布时间】:2016-04-20 20:40:05
【问题描述】:

对于一个应用程序,我需要所有用户最近完成的任务(在这种情况下,最近意味着过去 7 天)。我现在可以使用它,但是效率极低,在 API 参考中我找不到更好的方法。

我目前需要做的是获取当前用户 (https://app.asana.com/api/1.0/users/me),遍历用户的工作区并为每个工作区调用 https://app.asana.com/api/1.0/tasks?workspace=workspaceId&assignee=me&completed_since=sevenDaysAgo。这为我提供了该工作区中所有项目的所有已完成任务以及该工作区中所有项目的所有未完成任务的紧凑任务数据。由于我只需要已完成的任务,因此我需要从该列表中过滤出未完成的任务。但是,压缩任务数据不包括“已完成”属性。要确定一个任务是完成还是未完成,我需要获取完整的任务数据,这意味着调用https://app.asana.com/api/1.0/tasks/taskId每个任务

假设我有两个工作区,每个工作区都有三个项目,每个项目平均有 100 个已完成的任务和 200 个未完成的任务。这意味着 1 + 2 + (2 * 3) + (2 * 3 * 300) = 高达 1809 个 API 请求。除了速度非常慢之外,它在 Asana 服务器上也很受欢迎。

有没有办法更有效地做到这一点?只有为已完成的任务获取紧凑的任务数据才会有很长的路要走。一次通话会更好:例如,Asana 本身是如何在“我的任务”>“查看:最近完成的任务”中做到这一点的?

【问题讨论】:

    标签: asana asana-api


    【解决方案1】:

    (Asana dev here)您是否考虑过在最初的GET /tasks 请求中使用?opt_fields=completed?您可以专门请求您想要的任何字段,请参阅Input/Output option docs,当然,请参阅Task docs 以获取有关可用字段的参考。因此,如果您真的只想要名称(例如),您可以请求 ?opt_fields=completed,name

    遗憾的是,您需要自己过滤未完成的任务。

    【讨论】:

    • 这太棒了,我完全错过了 opt_fields 参数。这立即解决了我的问题,我现在根本不再需要调用 /tasks/taskId:我只需在 /tasks?workspace= 调用中选择我需要的所有字段。这将 /me 调用的调用次数减少到 1 次,每个工作区 1 次,这还不错。此外,任务现在加载速度快如闪电,而不是运球。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2022-01-19
    • 2020-05-13
    • 1970-01-01
    相关资源
    最近更新 更多