Conversion de Google Tasks en événements Google Calendar via l'intégration Webhook
Ceci est unPersonal Productivity, Multimodal AIworkflow d'automatisation du domainecontenant 16 nœuds.Utilise principalement des nœuds comme If, Set, Webhook, DateTime, GoogleTasks. Convertir les tâches Google en événements Google Calendar via l'intégration Webhook
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
Nœuds utilisés (16)
{
"meta": {
"instanceId": "6d95cfcfdb5941832863c02ceb9fcbd0e7cde6400b76244f830811247606f9a4",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e617195e-a1e2-4bb4-95b9-c7751ee8782c",
"name": "Template Notes",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
0
],
"parameters": {
"color": 5,
"width": 528,
"height": 288,
"content": "## What this template does\nCreate Google Calendar events from incoming task payloads.\n\n## How to set up\n1) Select Google credentials in Tasks & Calendar nodes.\n2) Configure `tasklistId` and `calendarId` in **Configuration**.\n3) POST `{ TaskName, DueDateTimeSeconds }` to the Webhook.\n4) Test, then activate.\n"
},
"typeVersion": 1
},
{
"id": "8baf3bc2-affd-4427-ad8f-0a8eef5995e9",
"name": "Configuration",
"type": "n8n-nodes-base.set",
"position": [
320,
480
],
"parameters": {
"values": {
"number": [
{
"name": "defaultMinutes",
"value": 30
},
{
"name": "eventColor",
"value": 8
}
],
"string": [
{
"name": "calendarId",
"value": "primary"
},
{
"name": "tasklistId",
"value": "REPLACE_WITH_TASKLIST_ID"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "6d90eb2d-3275-4525-b5d7-f7e761417683",
"name": "Google Tasks",
"type": "n8n-nodes-base.googleTasks",
"position": [
544,
480
],
"parameters": {
"task": "={{ $('Configuration').item.json.tasklistId }}",
"operation": "getAll",
"additionalFields": {
"showCompleted": false
}
},
"credentials": {
"googleTasksOAuth2Api": {
"id": "r2Y8GsrO4PklYdVd",
"name": "Google Tasks account"
}
},
"typeVersion": 1
},
{
"id": "668b1608-7a1b-4ac2-8570-fcbf8278cfaa",
"name": "Date et heure",
"type": "n8n-nodes-base.dateTime",
"position": [
752,
480
],
"parameters": {
"date": "={{ $('Webhook').item.json.body.DueDateTimeSeconds.toDateTime(\"s\") }}",
"format": "custom",
"options": {},
"operation": "formatDate",
"customFormat": "=yyyy-MM-dd HH:mm:ss"
},
"typeVersion": 2
},
{
"id": "0be0e8d0-b369-47e4-9419-90b3def746ad",
"name": "Google Agenda",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1392,
560
],
"parameters": {
"end": "={{ $('Date & Time').item.json.formattedDate.toDateTime().plus($('Configuration').item.json.defaultMinutes, 'minutes').format(\"yyyy-MM-dd HH:mm:ss\") }}",
"start": "={{ $('Date & Time').item.json.formattedDate }}",
"calendar": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.calendarId }}"
},
"additionalFields": {
"color": "={{ $('Configuration').item.json.eventColor }}",
"summary": "={{ $('Google Tasks').item.json.title }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "20g8lCLkphJifaBd",
"name": "Google Calendar account"
}
},
"typeVersion": 1.1
},
{
"id": "530619d8-52f2-4bb6-9fed-4068e686127a",
"name": "Google Tasks1",
"type": "n8n-nodes-base.googleTasks",
"position": [
1616,
560
],
"parameters": {
"task": "MTQ4MDk5NDE1Mjc2NjA5MTA5MjE6MDow",
"taskId": "={{ $('Google Tasks').item.json.id }}",
"operation": "delete"
},
"credentials": {
"googleTasksOAuth2Api": {
"id": "r2Y8GsrO4PklYdVd",
"name": "Google Tasks account"
}
},
"typeVersion": 1
},
{
"id": "36a1682b-8390-4273-ac26-1c35ec932294",
"name": "Déclencheur Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
112,
480
],
"webhookId": "task-to-calendar",
"parameters": {
"path": "task-to-calendar",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "0fde8152-49b5-49e5-b52e-23fdb8000d03",
"name": "Google Agenda9",
"type": "n8n-nodes-base.googleCalendar",
"position": [
960,
480
],
"parameters": {
"limit": 3,
"options": {
"query": "={{ $('Webhook').item.json.body.TaskName }}",
"updatedMin": "={{ $now.minus(5, 'minutes') }}",
"showDeleted": "=false"
},
"calendar": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.calendarId }}"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "20g8lCLkphJifaBd",
"name": "Google Calendar account"
}
},
"typeVersion": 1.1,
"alwaysOutputData": true
},
{
"id": "de1caa4c-f1fc-44cc-baf4-9522f72f2b8d",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
1152,
480
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f08129c7-f807-4915-9012-020c59db3629",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.summary }}",
"rightValue": "={{ $json.summary }}"
},
{
"id": "66c9e6d4-82bd-4e28-9456-4b9c9c1e54a3",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "{{ $('Webhook').item.json.body.TaskName }}",
"rightValue": "{{ $json.summary }}"
}
]
}
},
"typeVersion": 2,
"alwaysOutputData": false
},
{
"id": "b6b89761-d9dd-4f41-b150-c3e1de4246b6",
"name": "Étape 1 – Déclencheur",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
736
],
"parameters": {
"color": "blue",
"height": 288,
"content": "## Step 1 – Trigger (Webhook)\nReceives a JSON payload and starts the flow.\n\n**Example payload**\n```json\n{ \"TaskName\": \"Pay invoice\", \"DueDateTimeSeconds\": 1735179600 }\n```\nTip: replace the Manual Trigger if you prefer scheduled imports."
},
"typeVersion": 1
},
{
"id": "63bc5ca7-8930-434a-b293-6168a11f5881",
"name": "Étape 2 – Configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
736
],
"parameters": {
"color": "blue",
"height": 288,
"content": "## Step 2 – Configuration\nSingle place to adjust variables:\n- `tasklistId` – Google Tasks list ID\n- `calendarId` – target Calendar (e.g., `primary`)\n- `defaultMinutes` – event duration\n- `eventColor` – Calendar color index"
},
"typeVersion": 1
},
{
"id": "91d84006-1103-4686-877d-7135245db2a1",
"name": "Étape 3 – Date",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
736
],
"parameters": {
"color": "blue",
"height": 176,
"content": "## Step 3 – Date formatting\nBuilds a proper start datetime from `DueDateTimeSeconds`.\nEnd time = start + `defaultMinutes` (configurable)."
},
"typeVersion": 1
},
{
"id": "d4b1604a-8d40-466b-b8a8-a8d7dcdf6f03",
"name": "Étape 4 – Déduplication",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
736
],
"parameters": {
"color": "blue",
"height": 224,
"content": "## Step 4 – Duplicate guard\nSearches recently updated events in the target calendar to prevent duplicates.\nAdjust the search window or title matching to fit your use case."
},
"typeVersion": 1
},
{
"id": "c74b5b51-10c0-4a4f-ada8-450a25846258",
"name": "Étape 5 – Créer l'événement",
"type": "n8n-nodes-base.stickyNote",
"position": [
1184,
736
],
"parameters": {
"color": "blue",
"height": 192,
"content": "## Step 5 – Create event\nCreates a Calendar event using the formatted start time.\nEnd time = start + `defaultMinutes`. Color taken from `eventColor`."
},
"typeVersion": 1
},
{
"id": "680dfb47-1ef5-482b-a772-01ea49eb67f1",
"name": "Étape 6 – Nettoyage",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
736
],
"parameters": {
"color": "blue",
"height": 192,
"content": "## Step 6 – Cleanup (optional)\nDeletes the original Google Task after creating the Calendar event.\nDisable this if you prefer to keep tasks."
},
"typeVersion": 1
},
{
"id": "ba3e90cf-b8ce-40d7-adfa-f8c8f48891b5",
"name": "Vue d'ensemble du flux",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
0
],
"parameters": {
"color": "blue",
"width": 400,
"height": 192,
"content": "## Flow overview\n1) **Webhook** receives task payload →\n2) **Configuration** centralizes variables →\n3) **Date & Time** formats schedule →\n4) **Duplicate guard** checks recent events →\n5) **Create event** on Google Calendar →\n6) **Cleanup** optionally deletes original task."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"de1caa4c-f1fc-44cc-baf4-9522f72f2b8d": {
"main": [
[],
[
{
"node": "Google Calendar",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "8baf3bc2-affd-4427-ad8f-0a8eef5995e9",
"type": "main",
"index": 0
}
]
]
},
"Date & Time": {
"main": [
[
{
"node": "Google Calendar9",
"type": "main",
"index": 0
}
]
]
},
"6d90eb2d-3275-4525-b5d7-f7e761417683": {
"main": [
[
{
"node": "Date & Time",
"type": "main",
"index": 0
}
]
]
},
"8baf3bc2-affd-4427-ad8f-0a8eef5995e9": {
"main": [
[
{
"node": "6d90eb2d-3275-4525-b5d7-f7e761417683",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar": {
"main": [
[
{
"node": "530619d8-52f2-4bb6-9fed-4068e686127a",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar9": {
"main": [
[
{
"node": "de1caa4c-f1fc-44cc-baf4-9522f72f2b8d",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Productivité personnelle, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Partager ce workflow