Asana time entries in a live spreadsheet

Add the Time entries table to a sheet as a data source named time_entries and its 14 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.time_entries.sum(minutes)
Total minutes. Adds up the Minutes column over every row of Time entries.
=data.time_entries.sum(minutes, user, A2)
Minutes per user. With a user in A2, the total for that one. Fill it down next to a list of them.
=list.time_entries(user)
Every user, once. Spills the distinct user values down the column: the row labels for the formula above.
=data.time_entries.sum(minutes, date, ">=2026-01-01")
Since a date. Only rows whose Date is on or after 1 January 2026. Criteria such as ">=", "<" and "<>" work as in any spreadsheet.
=data.time_entries.count(id, user, "<>")
Rows with a user. Counts the rows whose User is not empty.
=data.time_entries.avg(hours)
Average hours. avg, min, max, count, countd (distinct) and first work the same way as sum.

Reports that use it

=data.time_entries.sum(hours, project, A2)
Hours logged per project. Time entries summed per project (time tracking, paid plans).

Columns

ColumnIn formulasType
IDidText
DatedateDate
MinutesminutesWhole number
HourshoursNumber
UseruserText
User IDuser_idText
TasktaskText
Task IDtask_idText
ProjectprojectText
Project IDproject_idText
CategoriescategoriesText
Project: Teamproject_teamText
Project: Ownerproject_ownerText
User: E-mailuser_e_mailText

Other planning tables

Your time entries, 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.