Для приложения мне нужны все недавно выполненные задачи пользователя (в данном случае это последние 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 делает это в «Мои задачи»> «Просмотр: недавно выполненные задачи»?