Asana tasks by project in a live spreadsheet
Add the Tasks by project table to a sheet as a data source named tasks_by_project and its 29 columns become names your formulas, pivot tables and charts use. Sheets reads it from your Asana workspace each time the sheet opens or refreshes.
Custom fields are columns too, named like the field. Portfolios, goals and time entries need one of Asana's paid plans; on a free workspace those tables are empty.
Formulas on this table
=data.tasks_by_project.sum(days_overdue) Total days overdue. Adds up the Days overdue column over every row of Tasks by project.
=data.tasks_by_project.sum(days_overdue, section, A2) Days overdue per section. With a section in A2, the total for that one. Fill it down next to a list of them.
=list.tasks_by_project(section) Every section, once. Spills the distinct section values down the column: the row labels for the formula above.
=data.tasks_by_project.sum(days_overdue, due_date, ">=2026-01-01") Since a date. Only rows whose Due date is on or after 1 January 2026. Criteria such as ">=", "<" and "<>" work as in any spreadsheet.
=data.tasks_by_project.count(id, section, "<>") Rows with a section. Counts the rows whose Section is not empty.
Reports that use it
=data.tasks_by_project.count(id, project, A2, completed, FALSE) Open tasks per project. List the projects with =list.tasks_by_project(project) in column A and count the open tasks beside each one. A task in two projects counts in both.
=data.tasks_by_project.count(id, project, A2, completed, TRUE) / data.tasks_by_project.count(id, project, A2) Done share per project. Completed tasks as a share of all tasks in the project in A2.
Columns
| Column | In formulas | Type |
|---|---|---|
| ID | id | Text |
| Task ID | task_id | Text |
| Task | task | Text |
| Project | project | Text |
| Project ID | project_id | Text |
| Section | section | Text |
| Section ID | section_id | Text |
| Via parent task | via_parent_task | Yes / no |
| Completed | completed | Yes / no |
| Status | status | Text |
| Due | due | Text |
| Days overdue | days_overdue | Whole number |
| Due date | due_date | Date |
| Start date | start_date | Date |
| Assignee | assignee | Text |
| Assignee ID | assignee_id | Text |
| Subtask | subtask | Yes / no |
| Created at | created_at | Date and time |
| Created month | created_month | Text |
| Completed at | completed_at | Date and time |
| Completed on | completed_on | Date |
| Completed month | completed_month | Text |
| Updated at | updated_at | Date and time |
| Project: Owner | project_owner | Text |
| Project: Team | project_team | Text |
| Project: Archived | project_archived | Yes / no |
| Project: Completed | project_completed | Yes / no |
| Project: Due date | project_due_date | Date |
| Assignee: E-mail | assignee_e_mail | Text |
Other work tables
Your tasks by project, live
Tasks, projects, people, portfolios, goals and time entries become tables that formulas, pivot tables and charts read directly. Open and overdue work, workload per person and completion trends stay current without exporting.