Asana goals in a live spreadsheet

Add the Goals table to a sheet as a data source named goals 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.goals.sum(current_value)
Total current value. Adds up the Current value column over every row of Goals.
=data.goals.sum(current_value, status, A2)
Current value per status. With a status in A2, the total for that one. Fill it down next to a list of them.
=list.goals(status)
Every status, once. Spills the distinct status values down the column: the row labels for the formula above.
=data.goals.sum(current_value, start_date, ">=2026-01-01")
Since a date. Only rows whose Start date is on or after 1 January 2026. Criteria such as ">=", "<" and "<>" work as in any spreadsheet.
=data.goals.count(id, status, "<>")
Rows with a status. Counts the rows whose Status is not empty.
=data.goals.avg(target_value)
Average target value. avg, min, max, count, countd (distinct) and first work the same way as sum.

Reports that use it

=data.goals.avg(progress)
Goal progress. Average progress of the goals from their starting value to their target (goals, paid plans).

Columns

ColumnIn formulasType
IDidText
NamenameText
OwnerownerText
Owner IDowner_idText
TeamteamText
StatusstatusText
Start datestart_dateDate
Due datedue_dateDate
Current valuecurrent_valueNumber
Target valuetarget_valueNumber
Initial valueinitial_valueNumber
ProgressprogressNumber
UnitunitText
Workspace goalworkspace_goalYes / no

Other planning tables

Your goals, 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.