1

对于应用程序,我需要所有用户最近完成的任务(在这种情况下,最近意味着最近 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。

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

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

4

1 回答 1

3

(Asana dev here)您是否考虑?opt_fields=completed过在您的初始GET /tasks请求中使用?您可以专门请求您想要的任何字段,请参阅输入/输出选项文档,当然,请参阅任务文档以获取有关可用字段的参考。因此,如果您真的只想要名称(例如),您可以请求?opt_fields=completed,name.

可悲的是,您将需要过滤掉不完整的任务。

于 2016-01-15T10:47:18.490 回答