高效获取所有已完成的任务
Efficiently getting all completed tasks
对于一个应用程序,我需要用户最近完成的所有任务(在本例中最近意味着最近 7 天)。我现在已经可以使用了,但是效率极低,而且在 API 参考资料中我看不到更好的方法。
我目前需要做的是获取当前用户(https://app.asana.com/api/1.0/users/me), iterate through the user's workspaces and call https://app.asana.com/api/1.0/tasks?workspace=workspaceId&assignee=me&completed_since=sevenDaysAgo for each workspace. This gives me the compact task data for all completed tasks for all projects in that workspace, and also all uncompleted tasks for all projects in that workspace. Since I only need the completed tasks, I need to filter the uncompleted tasks out of that list. However, the compact task data doesn't include the "completed" property. To figure out if a task is completed or uncompleted, I need to get the full task data, which means a call to https://app.asana.com/api/1.0/tasks/taskId 每个任务。
假设我有两个工作区,每个工作区都有三个项目,每个项目平均有 100 个已完成的任务和 200 个未完成的任务。这意味着 1 + 2 + (2 * 3) + (2 * 3 * 300) = 高达 1809 API 个请求。除了速度非常慢之外,它在 Asana 服务器上也很受欢迎。
有没有办法更有效地做到这一点?只有为已完成的任务获取紧凑的任务数据才会有很长的路要走。在一个电话中获得它会更好:例如,Asana 本身如何在我的任务 > 查看:最近完成的任务中做到这一点?
(此处为 Asana 开发人员)您是否考虑过在最初的 GET /tasks
请求中使用 ?opt_fields=completed
?您可以专门请求您想要的任何字段,请参阅 Input/Output option docs, and of course see Task docs 以获取可用字段的参考。因此,如果您真的只想要名称(例如),您可以请求 ?opt_fields=completed,name
.
遗憾的是,您需要自己过滤未完成的任务。
对于一个应用程序,我需要用户最近完成的所有任务(在本例中最近意味着最近 7 天)。我现在已经可以使用了,但是效率极低,而且在 API 参考资料中我看不到更好的方法。
我目前需要做的是获取当前用户(https://app.asana.com/api/1.0/users/me), iterate through the user's workspaces and call https://app.asana.com/api/1.0/tasks?workspace=workspaceId&assignee=me&completed_since=sevenDaysAgo for each workspace. This gives me the compact task data for all completed tasks for all projects in that workspace, and also all uncompleted tasks for all projects in that workspace. Since I only need the completed tasks, I need to filter the uncompleted tasks out of that list. However, the compact task data doesn't include the "completed" property. To figure out if a task is completed or uncompleted, I need to get the full task data, which means a call to https://app.asana.com/api/1.0/tasks/taskId 每个任务。
假设我有两个工作区,每个工作区都有三个项目,每个项目平均有 100 个已完成的任务和 200 个未完成的任务。这意味着 1 + 2 + (2 * 3) + (2 * 3 * 300) = 高达 1809 API 个请求。除了速度非常慢之外,它在 Asana 服务器上也很受欢迎。
有没有办法更有效地做到这一点?只有为已完成的任务获取紧凑的任务数据才会有很长的路要走。在一个电话中获得它会更好:例如,Asana 本身如何在我的任务 > 查看:最近完成的任务中做到这一点?
(此处为 Asana 开发人员)您是否考虑过在最初的 GET /tasks
请求中使用 ?opt_fields=completed
?您可以专门请求您想要的任何字段,请参阅 Input/Output option docs, and of course see Task docs 以获取可用字段的参考。因此,如果您真的只想要名称(例如),您可以请求 ?opt_fields=completed,name
.
遗憾的是,您需要自己过滤未完成的任务。