Workflow n8n

Automatisation Todoist avec n8n : gestion quotidienne des tâches

Ce workflow n8n a pour objectif d'automatiser la gestion quotidienne des tâches dans Todoist, permettant ainsi aux utilisateurs de ne jamais manquer une tâche importante. Dans un contexte professionnel où la gestion du temps est cruciale, ce workflow s'adresse aux équipes et aux individus qui souhaitent optimiser leur productivité. Grâce à cette automatisation n8n, les utilisateurs peuvent récupérer les tâches de leur projet modèle et de leur boîte de réception, et les filtrer pour ne conserver que celles qui doivent être traitées le jour même. Étape 1 : Le déclencheur est programmé pour s'exécuter tous les jours à 5h du matin, ce qui permet de commencer la journée avec une liste de tâches à jour. Étape 2 : Le workflow récupère toutes les tâches de la boîte de réception et celles du projet modèle. Étape 3 : Ensuite, une série de filtres est appliquée pour garder uniquement les tâches qui correspondent à la date du jour. Étape 4 : Si des tâches sont trouvées, elles sont analysées pour vérifier si elles portent une étiquette quotidienne. Si c'est le cas, elles sont ajoutées à la liste des tâches à traiter. Enfin, les tâches qui ne sont plus nécessaires sont supprimées, permettant ainsi de garder un espace de travail propre et organisé. Les bénéfices business de ce workflow incluent une meilleure gestion du temps, une réduction des risques d'oubli de tâches importantes et une augmentation de la productivité globale des équipes. En mettant en place cette automatisation, les utilisateurs peuvent se concentrer sur des tâches à plus forte valeur ajoutée, tout en ayant l'assurance que leurs tâches quotidiennes sont bien gérées. Tags clés : automatisation, Todoist, n8n.

Catégorie: Scheduled · Tags: automatisation, Todoist, n8n, gestion des tâches, productivité0

Vue d'ensemble du workflow n8n

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Détail des nœuds du workflow n8n

  • Sticky Note3

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Get all tasks from template project

    Ce noeud récupère toutes les tâches d'un projet modèle dans Todoist selon des filtres spécifiés.

  • Parse task details

    Ce noeud analyse les détails d'une tâche en utilisant un code JavaScript personnalisé.

  • Sticky Note2

    Ce noeud crée une autre note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Keep tasks that match today

    Ce noeud filtre les tâches pour ne garder que celles qui correspondent à la date d'aujourd'hui.

  • Every day at 5:10am

    Ce noeud déclenche le workflow tous les jours à 5h10 du matin.

  • Every day at 5am

    Ce noeud déclenche le workflow tous les jours à 5h du matin.

  • Get all tasks from Inbox

    Ce noeud récupère toutes les tâches de la boîte de réception dans Todoist selon des filtres spécifiés.

  • If list not empty

    Ce noeud vérifie si la liste des tâches n'est pas vide.

  • if it has daily label

    Ce noeud vérifie si une tâche possède une étiquette quotidienne.

  • Delete task

    Ce noeud supprime une tâche de Todoist en utilisant son identifiant.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Create new task in Inbox

    Ce noeud crée une nouvelle tâche dans la boîte de réception de Todoist avec des étiquettes, contenu et options spécifiés.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "id": "d49ee203-5bd1-45c0-859d-f1b248bfdf71",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        40
      ],
      "parameters": {
        "color": 5,
        "width": 424.4907862645661,
        "height": 154.7766688696994,
        "content": "### 👨‍🎤 Setup\n1. Add Todoist creds\n2. Create a `template` list to copy from in Todoist. Add days and due times on each task as necessary.\n3. Set the projects to copy from and to write to in each **Todoist** node"
      },
      "typeVersion": 1
    },
    {
      "id": "e69dd4e2-7ff6-4613-a1c9-ac1f3da37955",
      "name": "Get all tasks from template project",
      "type": "n8n-nodes-base.todoist",
      "position": [
        860,
        420
      ],
      "parameters": {
        "filters": {
          "projectId": "2299363018"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "todoistApi": {
          "id": "1",
          "name": "Todoist account"
        }
      },
      "executeOnce": true,
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "fa907d45-3822-4549-9f84-8385bb4183cc",
      "name": "Parse task details",
      "type": "n8n-nodes-base.code",
      "position": [
        1080,
        420
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "const item = {};\n\nitem.description = $input.item.json.description;\nitem.content = $input.item.json.content;\n\nconst parts = item.description.split(';').map((v) => v.trim());\nparts.forEach((v) => {\n  const tag = v.split(':');\n  if (tag && tag.length === 2) {\n    item[tag[0]] = tag[1].trim();\n  }\n});\n\nif (item.due) {\n  item.due = parseTimeString(item.due);\n}\n\nreturn item;\n\nfunction parseTimeString(timeString) {\n    const regex = /^(\\d{1,2})(\\.)?(\\d{2})?([ap]m)$/i;\n    const match = timeString.match(regex);\n    \n    if (!match) {\n        throw new Error(\"Invalid time format\");\n    }\n\n    let hours = parseInt(match[1], 10);\n    let minutes = match[3] ? parseInt(match[3], 10) : 0;\n    const period = match[4].toLowerCase();\n\n    if (hours === 12) {\n        hours = period === 'am' ? 0 : 12;\n    } else {\n        hours = period === 'pm' ? hours + 12 : hours;\n    }\n\n    // Check if minutes are valid\n    if (minutes < 0 || minutes >= 60) {\n        throw new Error(\"Invalid minutes\");\n    }\n\n    const now = DateTime.now().set({ hour: hours, minute: minutes, second: 0, millisecond: 0 });\n    return now.toUTC();\n}\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4989bac6-0741-4cdc-bc9c-e7800f9b3019",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1140,
        600
      ],
      "parameters": {
        "color": 7,
        "width": 351.4230769230764,
        "height": 222.50000000000006,
        "content": "### 👆 This adds due dates to tasks from description.. \n### For example in the description of a task\n`days:mon,tues; due:8am`\n### So that it will create a task every Monday and Tuesday that's due at 8am ⏰"
      },
      "typeVersion": 1
    },
    {
      "id": "accc330b-1b67-4181-8735-94b0debc8d70",
      "name": "Keep tasks that match today",
      "type": "n8n-nodes-base.filter",
      "position": [
        1300,
        420
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.days }}",
              "value2": "={{ ['sun', 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat', 'sun'][new Date().getDay()] }}",
              "operation": "contains"
            },
            {
              "value1": "={{ $json.days }}",
              "value2": "={{ ['sun', 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat', 'sun'][new Date().getDay()] }}",
              "operation": "contains"
            }
          ]
        },
        "combineConditions": "OR"
      },
      "typeVersion": 1
    },
    {
      "id": "dbe1fc24-1833-493b-b444-de21a4b3c3c5",
      "name": "Every day at 5:10am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        620,
        420
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 5,
              "triggerAtMinute": 10
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "b4737822-89aa-4ca0-bd9b-c5f9a16360c0",
      "name": "Every day at 5am",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        400,
        220
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 5,
              "triggerAtMinute": 10
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2a9adc4b-552b-47a9-a32c-54d8d4bfb669",
      "name": "Get all tasks from Inbox",
      "type": "n8n-nodes-base.todoist",
      "position": [
        620,
        220
      ],
      "parameters": {
        "filters": {
          "projectId": "938017196"
        },
        "operation": "getAll",
        "returnAll": true
      },
      "credentials": {
        "todoistApi": {
          "id": "1",
          "name": "Todoist account"
        }
      },
      "executeOnce": false,
      "retryOnFail": true,
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "d4794543-3002-4663-8979-360eb437fb4e",
      "name": "If list not empty",
      "type": "n8n-nodes-base.if",
      "position": [
        840,
        220
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json[\"id\"] }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "297fcbcb-efe3-4965-b836-34e78a3b452d",
      "name": "if it has daily label",
      "type": "n8n-nodes-base.if",
      "position": [
        1080,
        220
      ],
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{ ($json[\"labels\"] || []).includes('daily') }}",
              "value2": true
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0365a865-f03b-4afc-a535-4e3892fc3add",
      "name": "Delete task",
      "type": "n8n-nodes-base.todoist",
      "position": [
        1280,
        220
      ],
      "parameters": {
        "taskId": "={{ $json[\"id\"] }}",
        "operation": "delete"
      },
      "credentials": {
        "todoistApi": {
          "id": "1",
          "name": "Todoist account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "b14a8ecc-ee07-4a33-ab4b-122c98694c60",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1740,
        440
      ],
      "parameters": {
        "color": 7,
        "width": 256.14371825927645,
        "height": 100,
        "content": "### 👈🏽 Every new task has `daily` label that gets deleted in the other flow"
      },
      "typeVersion": 1
    },
    {
      "id": "d951f461-685e-4507-b010-bce2be0e3709",
      "name": "Create new task in Inbox",
      "type": "n8n-nodes-base.todoist",
      "position": [
        1520,
        420
      ],
      "parameters": {
        "labels": [
          "daily"
        ],
        "content": "={{ $json.content }}",
        "options": {
          "description": "={{ $json.description }}",
          "dueDateTime": "={{ $json.due }}"
        },
        "project": {
          "__rl": true,
          "mode": "list",
          "value": "938017196",
          "cachedResultName": "Inbox"
        }
      },
      "credentials": {
        "todoistApi": {
          "id": "1",
          "name": "Todoist account"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2,
      "alwaysOutputData": false
    }
  ],
  "pinData": {},
  "connections": {
    "Every day at 5am": {
      "main": [
        [
          {
            "node": "Get all tasks from Inbox",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If list not empty": {
      "main": [
        [
          {
            "node": "if it has daily label",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse task details": {
      "main": [
        [
          {
            "node": "Keep tasks that match today",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Every day at 5:10am": {
      "main": [
        [
          {
            "node": "Get all tasks from template project",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "if it has daily label": {
      "main": [
        [
          {
            "node": "Delete task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all tasks from Inbox": {
      "main": [
        [
          {
            "node": "If list not empty",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Keep tasks that match today": {
      "main": [
        [
          {
            "node": "Create new task in Inbox",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all tasks from template project": {
      "main": [
        [
          {
            "node": "Parse task details",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Pour qui est ce workflow ?

Ce workflow s'adresse aux professionnels et aux équipes qui utilisent Todoist pour la gestion de leurs tâches. Il est idéal pour les entreprises de taille petite à moyenne qui cherchent à améliorer leur efficacité opérationnelle sans nécessiter de compétences techniques avancées.

Problème résolu

Ce workflow résout le problème de la gestion des tâches quotidiennes en automatisant le processus de récupération et de filtrage des tâches dans Todoist. Les utilisateurs n'ont plus à se soucier d'oublier des tâches importantes, ce qui réduit le stress et améliore la productivité. En éliminant les tâches obsolètes, ce workflow permet également de maintenir un environnement de travail organisé et efficace.

Étapes du workflow

Étape 1 : Le déclencheur s'exécute tous les jours à 5h du matin. Étape 2 : Récupération des tâches de la boîte de réception et du projet modèle. Étape 3 : Filtrage des tâches pour ne garder que celles qui correspondent à la date du jour. Étape 4 : Vérification des tâches pour voir si elles portent une étiquette quotidienne. Étape 5 : Ajout des tâches pertinentes à la liste de traitement. Étape 6 : Suppression des tâches non nécessaires.

Guide de personnalisation du workflow n8n

Pour personnaliser ce workflow, vous pouvez modifier les paramètres du déclencheur pour ajuster l'heure d'exécution selon vos besoins. Il est également possible de changer les filtres appliqués lors de la récupération des tâches, par exemple en ajoutant ou en supprimant des étiquettes. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des noeuds supplémentaires pour interagir avec d'autres applications. Assurez-vous de sécuriser le flux en vérifiant les permissions d'accès à votre compte Todoist.