{"product_id":"sync-google-calendar-to-asana-tasks-with-n8n-data-table","title":"Sync Google Calendar to Asana Tasks with n8n Data Table","description":"\u003ch3\u003eSync Google Calendar events into Asana tasks automatically (hourly) with an n8n Data Table\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow keeps your Asana project aligned with your Google Calendar: it creates, updates, or deletes Asana tasks based on calendar event changes—using an \u003cstrong\u003en8n Data Table\u003c\/strong\u003e as a sync log to prevent duplicates.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRuns hourly\u003c\/strong\u003e using a schedule trigger.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePulls Google Calendar events\u003c\/strong\u003e from the \u003cstrong\u003elast 3 days\u003c\/strong\u003e through the next configured time window, and filters to \u003cstrong\u003estandard (default) event types\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMatches events to existing tasks\u003c\/strong\u003e by reading prior sync records from an \u003cstrong\u003en8n Data Table\u003c\/strong\u003e (using the stored CalendarEventID → AsanaTaskID mapping).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCreates or updates tasks\u003c\/strong\u003e when events are new or changed (tracked via each event’s \u003cstrong\u003elast updated timestamp\u003c\/strong\u003e).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDeletes tasks\u003c\/strong\u003e when events are \u003cstrong\u003ecancelled or declined\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eAssigns and follows\u003c\/strong\u003e tasks by looking up the \u003cstrong\u003eevent organiser\u003c\/strong\u003e in your Asana workspace as the assignee, then adds \u003cstrong\u003eaccepted\/tentative attendees from your company email domain\u003c\/strong\u003e as followers.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePins an HTML event summary\u003c\/strong\u003e as a comment on the task.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWrites back sync state\u003c\/strong\u003e to the n8n Data Table with the \u003cstrong\u003eAsanaTaskID\u003c\/strong\u003e and event update time.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eConvert meetings from \u003cstrong\u003eGoogle Calendar\u003c\/strong\u003e into actionable \u003cstrong\u003eAsana tasks\u003c\/strong\u003e for your team.\u003c\/li\u003e\n  \u003cli\u003eEnsure Asana stays clean by removing tasks when meetings are cancelled or declined.\u003c\/li\u003e\n  \u003cli\u003eUse a centralized sync log (n8n Data Table) to safely handle duplicates and repeated sync runs.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eIntegrations:\u003c\/strong\u003e Google Calendar (OAuth2) and Asana (OAuth2)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n Data Table:\u003c\/strong\u003e create a table with text columns \u003cem\u003eCalendarEventID\u003c\/em\u003e, \u003cem\u003eAsanaTaskID\u003c\/em\u003e, and \u003cem\u003eLastSyncedUpdate\u003c\/em\u003e\n\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNodes\/logic used:\u003c\/strong\u003e set, code, asana, merge, filter, switch\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eConfiguration includes:\u003c\/strong\u003e Google calendar ID, Asana workspace GID, Asana target project GID, company email domain, and timezone\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":46192814751923,"sku":"N8N-20688","price":20.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/zvHc9p7eLOkdWl1XyQ5L2_gzPZB7Tq.png?v=1791536611","url":"https:\/\/buyflowscripts.com\/products\/sync-google-calendar-to-asana-tasks-with-n8n-data-table","provider":"N8N Commerce","version":"1.0","type":"link"}