Update existing Asana tasks from a spreadsheet
Export a project to CSV, change it in Excel or Google Sheets, and upload it here. Each row updates the task with the same Task ID. Nothing is created or deleted, and you see every change before anything is sent.
Asana's own CSV import only adds new tasks. This updates the ones you already have.
Update tasks
1 Your Asana token and project
In Asana, open the developer console, click Create new token, give it a name and copy it. Your token goes from this page straight to Asana's API at app.asana.com. It is never sent to our server, never stored and never logged, and it is gone when you close this tab. A personal access token can do everything your Asana account can; this page only changes the tasks in your file.
2 The CSV you exported and edited
In Asana, open the project, click the arrow next to its name, then Export / Print, then CSV. Keep the Task ID column. Columns you did not change are left alone. In Excel, open the file with Data, From Text/CSV and set Task ID to Text, so its 16 digits are not rounded (see Which export works?).
What it changes in Asana
Only the fields whose value in your file differs from Asana right now. Every other field, and every task that is not in the file, stays as it is.
- Name, Notes (written as plain text), Due Date (a date, or a date and time), Start Date (needs a due date, like in Asana)
- Assignee: the e-mail address in Assignee Email, or the name in Assignee when the e-mail cell is empty; the person must be in the workspace
- Completed: a date in Completed At marks the task done,
(empty)reopens it; a Completed column with yes or no works too - Section/Column: moves the task to that section of the project you chose
- Custom fields by column name: text, number (percent and currency formats included), single-select (by option name), multi-select (option names separated by commas) and date
- Not updated: people custom fields, formula fields, tags, projects, parent task, dependencies (Blocked By, Blocking), attachments, comments and followers. These columns are shown as skipped.
A row with a problem, like a section that does not exist or a person who is not in the workspace, is shown in red and skipped as a whole. Nothing from that row is sent. The other rows go on.
How to undo
When you apply, the page keeps the previous value of every field it changed. Download it as an undo CSV, or press Undo this run: it puts the old values back the same way, after showing you the changes first. If a run stops halfway, upload the same file again: tasks that are already updated show as unchanged, so only the rest is sent.
Pricing
Free
$0
Update your first 25 tasks. Checking changes is always free, for any number of rows.
30-day pass
$19 one payment
Unlimited task updates for 30 days. No subscription, no renewal.
Your licence key (keep it):
Prices in USD. Local VAT/GST is included or added at checkout by Paddle depending on your country. You get a full refund within 14 days, see the terms.
Questions
Is my token safe?
The page sends it only to app.asana.com, in the request header Asana asks for. Our server never sees it, and we do not store or log it. Be aware that a personal access token has the full access of your Asana user, in every workspace you belong to. This page only reads the tasks of the project you choose (plus any other task in your file), its sections and the people of the workspace, and it writes only the changes you confirm. You can revoke the token any time in the Asana developer console, under Personal access tokens.
What stays in my browser?
Two things, in this browser's local storage only: the number of free task updates used, and the undo file from your last run (task IDs and the old values), so you can still download it after closing the tab. Remove the undo file with the "remove it from this browser" link in the tool above, or by clearing this site's data. Nothing of it is sent to us.
Does my file go to your server?
No. It is read inside this page. Our server only gets an anonymous count of visits, checks and applies, and your licence key when you activate one.
Which export works?
Asana's project export: open the project, click the arrow next to its name, then Export / Print, then CSV. Any CSV with a Task ID column works, with any of its columns removed. Asana's Task IDs have 16 digits, and Excel and Google Sheets keep only 15, so they can round the last digit when they open the file. In Excel, use Data, From Text/CSV and set the Task ID column to Text. In Google Sheets, use File, Import and untick "Convert text to numbers, dates, and formulas". If an ID was rounded anyway, the page matches it to the one task of the chosen project whose ID is that close (using the row's name when more than one is) and says so on the row; when that does not settle it, the row is shown as an error.
What is not updated?
People custom fields, formula fields, tags, projects, parent task, dependencies, attachments, comments, followers and likes. Their columns are listed as skipped or not used, and nothing is sent for them. Notes are written as plain text: when you change a task's notes, bold, lists, links and @-mentions in them are lost, and the row says so before you apply. A task moved to another section goes into that section, but its place inside the section is not kept.
How fast is it?
Asana allows 150 API requests a minute per token on free workspaces and 1,500 on paid ones. Checking reads the project's tasks 100 at a time, plus one request for each task in your file that is not in the project (like subtasks). Applying sends one request for a task's own fields, one for its custom fields and one for a section move. When Asana asks the page to slow down, it waits as long as Asana says. On a free workspace expect about 50 to 150 tasks a minute. The progress bar shows the time left. Keep the tab open.
Subtasks?
Yes, if they are rows in the file with their own Task ID. They are read one by one, so they take a little longer to check.