对于应用程序,我需要所有用户最近完成的任务(最近意味着在这种情况下的最近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如何在我的任务中执行此操作>查看:例如,最近完成的任务?
答案 0 :(得分:2)
(Asana dev here)您是否考虑在初始?opt_fields=completed
请求中使用GET /tasks
?您可以专门请求所需的任何字段,请参阅Input/Output option docs,当然也可以参阅Task docs以获取有关可用字段的参考。因此,如果您真的只想要名称(例如),您可以请求?opt_fields=completed,name
。
可悲的是,你需要过滤掉你身边不完整的任务。