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
- Runs every hour on a schedule.
- Fetches all tasks from a specified Asana project via the Asana API (including assignee, due date, completion status, section, permalink, and modified time) and paginates through results.
- Flattens the Asana task list into one Google Sheets-ready row per task and stamps each row with a sync timestamp.
- Reads the existing rows from the target Google Sheets tab.
- Compares Asana tasks to sheet rows by task GID to prepare upserts for current tasks and “soft-delete” updates that set
present to No for tasks no longer in Asana.
- Writes changes back to Google Sheets by upserting live tasks and updating removed tasks, then produces a one-line run summary with created/updated/removed counts.
Setup
- Add an Asana credential (personal access token) and set the Asana project GID used to fetch tasks.
- Add a Google Sheets OAuth2 credential and set the target spreadsheet ID and tab name.
- Ensure the sheet tab has a header row with these columns: gid, name, assignee, section, due_on, completed, permalink, modified_at, synced_at, present.
- Adjust the schedule interval if you want the sync to run more or less frequently.