Automatisation Notion avec n8n : gestion de tâches Asana
- Ce workflow n8n est conçu pour automatiser la gestion des tâches entre Asana et Notion, facilitant ainsi le suivi et la mise à jour des projets. Dans un contexte professionnel où la collaboration et la gestion de projets sont essentielles, ce workflow permet aux équipes de synchroniser efficacement leurs tâches, d'éviter les doublons et de garantir que toutes les informations sont à jour. Les cas d'usage incluent la création de nouvelles tâches, la mise à jour des délais et la vérification des champs requis pour assurer une gestion fluide des projets.
- Le workflow commence par un déclencheur Asana qui s'active lors d'une mise à jour de tâche. Ensuite, il utilise des noeuds conditionnels pour déterminer si une tâche doit être créée ou mise à jour dans Notion. Si une tâche existe déjà, le noeud 'Update task' est utilisé pour modifier ses propriétés. Dans le cas contraire, le noeud 'Create task' permet d'ajouter une nouvelle tâche dans la base de données Notion. Pour garantir l'intégrité des données, des vérifications sont effectuées pour s'assurer que tous les champs requis sont présents avant de procéder à la mise à jour ou à la création.
- Les bénéfices de cette automatisation n8n sont nombreux : elle réduit le risque d'erreurs humaines, améliore la productivité des équipes et permet un suivi en temps réel des tâches. En intégrant Asana et Notion, les utilisateurs peuvent se concentrer sur leurs missions sans se soucier de la synchronisation manuelle des informations.
Workflow n8n Notion, Asana, gestion de tâches : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Notion, Asana, gestion de tâches : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"meta": {
"instanceId": "237600ca44303ce91fa31ee72babcdc8493f55ee2c0e8aa2b78b3b4ce6f70bd9"
},
"nodes": [
{
"id": "daaa472a-fff3-41e2-9b6f-f7f54655ea16",
"name": "Determine create/update",
"type": "n8n-nodes-base.if",
"position": [
1380,
300
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json[\"action\"] }}",
"value2": "Create"
}
]
}
},
"typeVersion": 1
},
{
"id": "1b047238-80b4-4144-929d-f860510b68c6",
"name": "Update task",
"type": "n8n-nodes-base.notion",
"position": [
1580,
420
],
"parameters": {
"pageId": "={{ $json[\"database_id\"] }}",
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Task|title",
"title": "={{ $json[\"name\"] }}"
},
{
"key": "Deadline|date",
"date": "={{ $json[\"due_on\"] }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "9",
"name": "[UPDATE ME]"
}
},
"typeVersion": 2
},
{
"id": "71801502-14bd-42d2-beb9-e44e90bcac49",
"name": "Create task",
"type": "n8n-nodes-base.notion",
"position": [
1580,
180
],
"parameters": {
"title": "={{$json[\"name\"]}}",
"resource": "databasePage",
"databaseId": "6181df20-c949-42e3-9999-7168d746efab",
"propertiesUi": {
"propertyValues": [
{
"key": "Asana GID|number",
"numberValue": "={{ parseInt($json[\"gid\"]) }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "9",
"name": "[UPDATE ME]"
}
},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "76d95145-89ff-477f-9e28-a64c3601b4ea",
"name": "Get tasks",
"type": "n8n-nodes-base.asana",
"position": [
780,
300
],
"parameters": {
"id": "={{ $json[\"gid\"] }}",
"operation": "get"
},
"credentials": {
"asanaApi": {
"id": "8",
"name": "[UPDATE ME]"
}
},
"typeVersion": 1,
"continueOnFail": true
},
{
"id": "b79c96eb-ad00-4aa7-b02e-306a940396fc",
"name": "Find tasks",
"type": "n8n-nodes-base.notion",
"position": [
980,
160
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"databaseId": "6181df20-c949-42e3-9999-7168d746efab",
"filterJson": "={{$node[\"Get unique tasks\"].json[\"notionfilter\"]}}",
"filterType": "json"
},
"credentials": {
"notionApi": {
"id": "9",
"name": "[UPDATE ME]"
}
},
"typeVersion": 2
},
{
"id": "9804b81f-b2f9-45dc-9bbd-a652543668fd",
"name": "Get unique tasks",
"type": "n8n-nodes-base.function",
"position": [
580,
300
],
"parameters": {
"functionCode": "const gids = [];\n\n// get all the unique Asana task gids\nfor (item of items) {\n var gid = parseInt(item.json.resource.gid);\n var resource_type = item.json.resource.resource_type;\n if (!(gids.includes(gid)) && resource_type == \"task\") {\n gids.push(gid);\n }\n}\n\n// show in output\nconst new_items = [];\nfor (gid of gids) {\n var new_item = {\n \"json\": {\n \"gid\": 0,\n \"gids\": [],\n \"notionfilter\": \"\"\n }\n };\n new_item = JSON.stringify(new_item);\n new_item = JSON.parse(new_item);\n new_item.json.gid = gid;\n new_item.json.gids = gids;\n new_items.push(new_item);\n\n // Notion filter\n notionfilter = {\n or: [],\n }\n\n for (gid of gids) {\n const filter = {\n property: 'Asana GID',\n number: {\n equals: gid\n }\n }\n notionfilter[\"or\"].push(filter);\n }\n\n\n new_item.json.notionfilter = JSON.stringify(notionfilter); \n}\n\nconsole.log(gids);\nreturn new_items;"
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "91883ca1-91f8-41ce-84d5-00f9f3296cc7",
"name": "Determine",
"type": "n8n-nodes-base.function",
"position": [
1180,
300
],
"parameters": {
"functionCode": "const gids_to_update = [];\nconst database_ids = [];\n\nfor (item of $items(\"Find tasks\")) {\n gids_to_update.push(parseInt(item.json.property_asana_gid));\n database_ids.push(item.json.id);\n}\nconsole.log(gids_to_update);\nconsole.log(database_ids);\n\nvar gid;\nlet i = 0;\nfor (item of $items(\"Get tasks\")) {\n gid = parseInt(item.json.gid);\n if (gids_to_update.includes(gid)) {\n item.json.action = \"Update\"\n item.json.database_id = database_ids[i];\n } else {\n item.json.action = \"Create\"\n }\n i++;\n}\n\nreturn $items(\"Get tasks\");"
},
"typeVersion": 1
},
{
"id": "8ba512bb-671a-47d2-88fc-19ed358df728",
"name": "Check required fields exist",
"type": "n8n-nodes-base.if",
"position": [
1780,
180
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $node[\"Determine\"].json[\"due_on\"] }}",
"operation": "isNotEmpty"
}
]
}
},
"typeVersion": 1
},
{
"id": "512a09e0-c595-4613-a4d9-ed3160fd403b",
"name": "Update deadline",
"type": "n8n-nodes-base.notion",
"position": [
1980,
180
],
"parameters": {
"pageId": "={{ $json[\"id\"] }}",
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Deadline|date",
"date": "={{ $node[\"Determine\"].json[\"due_on\"] }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "9",
"name": "[UPDATE ME]"
}
},
"typeVersion": 2
},
{
"id": "4b08a930-93ef-4f88-8109-9afa45af703e",
"name": "On update",
"type": "n8n-nodes-base.asanaTrigger",
"position": [
380,
300
],
"webhookId": "61055fe2-63c7-4b93-adcb-ddb7556c3060",
"parameters": {
"resource": "1202718722261680",
"workspace": "1177253494675264"
},
"credentials": {
"asanaApi": {
"id": "8",
"name": "[UPDATE ME]"
}
},
"typeVersion": 1
}
],
"connections": {
"Determine": {
"main": [
[
{
"node": "Determine create/update",
"type": "main",
"index": 0
}
]
]
},
"Get tasks": {
"main": [
[
{
"node": "Find tasks",
"type": "main",
"index": 0
},
{
"node": "Determine",
"type": "main",
"index": 0
}
]
]
},
"On update": {
"main": [
[
{
"node": "Get unique tasks",
"type": "main",
"index": 0
}
]
]
},
"Find tasks": {
"main": [
[
{
"node": "Determine",
"type": "main",
"index": 0
}
]
]
},
"Create task": {
"main": [
[
{
"node": "Check required fields exist",
"type": "main",
"index": 0
}
]
]
},
"Get unique tasks": {
"main": [
[
{
"node": "Get tasks",
"type": "main",
"index": 0
}
]
]
},
"Determine create/update": {
"main": [
[
{
"node": "Create task",
"type": "main",
"index": 0
}
],
[
{
"node": "Update task",
"type": "main",
"index": 0
}
]
]
},
"Check required fields exist": {
"main": [
[
{
"node": "Update deadline",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Notion, Asana, gestion de tâches : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de projet, aux responsables de la gestion des tâches et aux entreprises qui utilisent Asana et Notion pour la collaboration. Il est idéal pour les organisations de taille moyenne à grande qui cherchent à optimiser leur flux de travail sans nécessiter de compétences techniques avancées.
Workflow n8n Notion, Asana, gestion de tâches : problème résolu
Ce workflow résout le problème de la gestion manuelle des tâches entre Asana et Notion, qui peut souvent entraîner des erreurs et des pertes de temps. En automatisant ce processus, les utilisateurs peuvent éviter les doublons de tâches et garantir que toutes les informations sont à jour. Cela se traduit par une meilleure efficacité opérationnelle et une réduction du stress lié à la gestion des projets.
Workflow n8n Notion, Asana, gestion de tâches : étapes du workflow
Étape 1 : Le workflow est déclenché par une mise à jour d'une tâche dans Asana.
- Étape 1 : Il vérifie si la tâche existe déjà dans Notion grâce au noeud 'Find tasks'.
- Étape 2 : Si la tâche existe, elle est mise à jour avec le noeud 'Update task'. Sinon, une nouvelle tâche est créée avec le noeud 'Create task'.
- Étape 3 : Des vérifications sont effectuées pour s'assurer que tous les champs requis sont remplis avant de finaliser les modifications.
Workflow n8n Notion, Asana, gestion de tâches : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'ID de la base de données Notion dans le noeud 'Create task' et 'Update task'. Il est également possible d'ajuster les conditions dans le noeud 'Check required fields exist' pour s'assurer que les champs spécifiques à votre projet sont vérifiés. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des noeuds supplémentaires entre les étapes existantes pour enrichir le flux de travail.