Sync Asana project tasks with a mirrored Google Sheets tab
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
What this workflow does
This workflow has 13 nodes and runs on a schedule (every hour). Along the way it connects Google Sheets.
How it runs
Trigger: On a schedule (every hour).
- Set Sync Config (Edit Fields (Set)): sets 3 fields: asana_project_gid, sheet_id, sheet_tab
- Fetch Asana Tasks (HTTP Request): calls an HTTP API
- Read Existing Rows in Sheets (Google Sheets): uses Google Sheets
- Flatten Tasks to Rows (Code): runs custom JavaScript code
- Merge: merges the data from its input branches
- Diff Tasks by GID (Code): runs custom JavaScript code
- Route Upsert and Soft-Delete (If): checks a condition and branches into true / false
- Upsert Rows in Sheets (Google Sheets): append or update
- Flag Removed Rows in Sheets (Google Sheets): update
- Merge: merges the data from its input branches
…plus 1 more step. See the full node list below.
Services it uses
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (8)
- Schedule Trigger
n8n-nodes-base.scheduleTrigger - Edit Fields (Set)
n8n-nodes-base.set - HTTP Request
n8n-nodes-base.httpRequest - Code
n8n-nodes-base.code - Merge
n8n-nodes-base.merge - Google Sheets
n8n-nodes-base.googleSheets - If
n8n-nodes-base.if - No Operation, do nothing
n8n-nodes-base.noOp
From the author
Quick Overview This workflow runs hourly to sync tasks from an Asana project into a Google Sheets tab, keeping a row-per-task mirror with task metadata and a present flag that marks tasks removed from Asana without deleting them from the sheet. How it works…