Asana tasks in a live spreadsheet
Add the Tasks table to a sheet as a data source named tasks and its 36 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.sum(days_overdue) Total days overdue. Adds up the Days overdue column over every row of Tasks.
=data.tasks.sum(days_overdue, type, A2) Days overdue per type. With a type in A2, the total for that one. Fill it down next to a list of them.
=list.tasks(type) Every type, once. Spills the distinct type values down the column: the row labels for the formula above.
=data.tasks.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.count(id, type, "<>") Rows with a type. Counts the rows whose Type is not empty.
=data.tasks.avg(project_count) Average project count. avg, min, max, count, countd (distinct) and first work the same way as sum.
Reports that use it
=data.tasks.count(id, status, "Overdue") Overdue tasks. Open tasks whose due date has passed, over the whole workspace (subtasks included).
=data.tasks.count(id, due, "This week") Due this week. Open tasks due between today and Sunday.
=data.tasks.count(id, assignee, A2, completed, FALSE) Workload per person. Open tasks per assignee in column A (=list.tasks(assignee) spills the names).
=data.tasks.count(id, assignee, A2, status, "Overdue") Overdue per person. Overdue tasks per assignee, to see who needs help.
=data.tasks.count(id, completed_month, A2) Completed per month. Tasks completed per month: put months such as 2026-09 in column A.
=data.tasks.count(id, project_team, A2, completed, FALSE) Work per team. Open tasks per team, from each task's project team.
Columns
| Column | In formulas | Type |
|---|---|---|
| ID | id | Text |
| Name | name | Text |
| Type | type | Text |
| 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 |
| Project | project | Text |
| Project ID | project_id | Text |
| Section | section | Text |
| Section ID | section_id | Text |
| Projects | projects | Text |
| Project count | project_count | Whole number |
| Subtask | subtask | Yes / no |
| Parent task | parent_task | Text |
| Parent ID | parent_id | Text |
| Subtasks | subtasks | Whole number |
| Tags | tags | Text |
| Approval status | approval_status | Text |
| 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 |
| Link | link | 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, 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.