Workflow n8n

Automatisation n8n : gestion des workflows et des tags

  • Ce workflow n8n a pour objectif d'automatiser la gestion des workflows et des tags au sein de votre environnement n8n. Dans un contexte oĂč la gestion des projets et des ressources peut devenir complexe, ce workflow permet de simplifier le processus d'importation et de classement des workflows en fonction de leurs tags. Il est particuliĂšrement utile pour les Ă©quipes de dĂ©veloppement et de gestion de projet qui souhaitent optimiser leur utilisation de n8n et gagner en efficacitĂ©.
  • Le dĂ©roulĂ© commence par un dĂ©clencheur de type 'formTrigger' qui s'active lors de la soumission d'un formulaire. Ensuite, le workflow se connecte Ă  l'API n8n pour se connecter et rĂ©cupĂ©rer les projets existants. Les Ă©tapes suivantes incluent la filtration des projets possĂ©dĂ©s, la crĂ©ation de dossiers si nĂ©cessaire, et le dĂ©placement des workflows dans les dossiers appropriĂ©s. Des Ă©tapes de normalisation des noms et de suppression des doublons sont Ă©galement intĂ©grĂ©es pour garantir une organisation optimale.
  • Les bĂ©nĂ©fices de cette automatisation n8n sont multiples : elle rĂ©duit le temps passĂ© Ă  gĂ©rer manuellement les workflows, minimise les erreurs humaines et amĂ©liore la visibilitĂ© des projets en cours. En intĂ©grant ce workflow, les utilisateurs peuvent se concentrer sur des tĂąches Ă  plus forte valeur ajoutĂ©e, tout en assurant une gestion fluide et efficace de leurs ressources.
Tags clés :automatisationworkflowsn8ngestion de projetAPI
CatĂ©gorie: Webhook · Tags: automatisation, workflows, n8n, gestion de projet, API❀ 0

Workflow n8n workflows, gestion de projet : vue d'ensemble

SchĂ©ma des nƓuds et connexions de ce workflow n8n, gĂ©nĂ©rĂ© Ă  partir du JSON n8n.

Workflow n8n workflows, gestion de projet : dĂ©tail des nƓuds

  • set credentials

    Ce noeud définit les informations d'identification nécessaires pour les étapes suivantes.

  • login n8n

    Ce noeud effectue une requĂȘte HTTP pour se connecter Ă  n8n.

  • get tags

    Ce noeud rĂ©cupĂšre les tags via une requĂȘte HTTP.

  • my-projects

    Ce noeud effectue une requĂȘte HTTP pour obtenir les projets associĂ©s.

  • Split Out

    Ce noeud divise les données en plusieurs éléments basés sur un champ spécifié.

  • filter owned projects

    Ce noeud filtre les projets en fonction de critÚres définis.

  • Get folders

    Ce noeud effectue une requĂȘte HTTP pour rĂ©cupĂ©rer les dossiers.

  • Split Out2

    Ce noeud divise à nouveau les données en plusieurs éléments selon un autre champ.

  • Remove Duplicates

    Ce noeud supprime les doublons dans les données en fonction des champs spécifiés.

  • Loop Over Items

    Ce noeud traite les éléments en les parcourant par lots.

  • get workflows

    Ce noeud récupÚre les workflows existants dans n8n.

  • Move workflow to folder

    Ce noeud dĂ©place un workflow vers un dossier spĂ©cifique via une requĂȘte HTTP.

  • Normalize names

    Ce noeud normalise les noms en les assignant à des champs spécifiques.

  • Limit1

    Ce noeud limite le nombre d'éléments traités dans le workflow.

  • Create folders

    Ce noeud crĂ©e de nouveaux dossiers via une requĂȘte HTTP.

  • set folder name + id

    Ce noeud définit le nom et l'identifiant d'un dossier.

  • set folder name + id1

    Ce noeud définit également le nom et l'identifiant d'un autre dossier.

  • set global

    Ce noeud définit une variable globale dans le workflow.

  • Filter

    Ce noeud filtre les données en fonction de conditions spécifiques.

  • Edit Fields

    Ce noeud modifie les champs des données selon des assignations définies.

  • On form submission

    Ce noeud déclenche le workflow lors de la soumission d'un formulaire.

  • Code

    Ce noeud exécute un code JavaScript personnalisé pour traiter les données.

  • If no folder

    Ce noeud vérifie si un dossier n'existe pas et prend des mesures en conséquence.

  • If folder exists

    Ce noeud vérifie si un dossier existe et agit selon le résultat.

  • set name

    Ce noeud définit un nom spécifique pour un élément.

  • end import

    Ce noeud termine le processus d'importation avec un message de confirmation.

  • pass all items

    Ce noeud passe tous les éléments à l'étape suivante du workflow.

  • select tags to move

    Ce noeud permet de sélectionner des tags à déplacer via un formulaire.

  • extract name from form

    Ce noeud extrait le nom d'un formulaire et l'assigne Ă  un champ.

  • Split Out the tags

    Ce noeud divise les tags en plusieurs éléments selon un champ spécifié.

  • tags to string

    Ce noeud convertit les tags en une chaĂźne de caractĂšres.

  • Sticky Note

    Ce noeud crée une note autocollante avec des dimensions et un contenu spécifiés.

  • Sticky Note1

    Ce noeud crée une autre note autocollante avec des dimensions et un contenu.

  • Sticky Note2

    Ce noeud crée une note autocollante avec une couleur, des dimensions et un contenu.

  • Sticky Note3

    Ce noeud crée une note autocollante avec une couleur, des dimensions et un contenu.

  • Sticky Note4

    Ce noeud crée une note autocollante avec des dimensions et un contenu.

  • Sticky Note5

    Ce noeud crée une note autocollante avec des dimensions et un contenu.

  • Sticky Note6

    Ce noeud crée une note autocollante avec une couleur, des dimensions et un contenu.

  • Sticky Note7

    Ce noeud crée une note autocollante avec une couleur, des dimensions et un contenu.

  • Sticky Note8

    Ce noeud crée une note autocollante avec des dimensions et un contenu.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "db80165df40cb07c0377167c050b3f9ab0b0fb04f0e8cae0dc53f5a8527103ca",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "fd4629a6-f7c3-4927-a3da-767d8206b486",
      "name": "set credentials",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "bfb7f25d-f992-4395-9fbe-939a57fc2a3c",
              "name": "n8n",
              "type": "string",
              "value": "=[your n8n instance without a trailling /]"
            },
            {
              "id": "538e0608-fd19-46ed-ba2c-c1efe03eaf9b",
              "name": "username",
              "type": "string",
              "value": "=your n8n username"
            },
            {
              "id": "ad1c4785-70d0-40d7-a61c-e97c3e8702e7",
              "name": "password",
              "type": "string",
              "value": "=your n8n password"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "877bbd5c-fb57-4fa4-9d0a-113270113f31",
      "name": "login n8n",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        180,
        300
      ],
      "parameters": {
        "url": "={{ $json.n8n }}/rest/login",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "emailOrLdapLoginId",
              "value": "={{ $json.username }}"
            },
            {
              "name": "password",
              "value": "={{ $json.password }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "41effdd0-ffad-439c-aa33-39f9cc13f6f9",
      "name": "get tags",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        800,
        300
      ],
      "parameters": {
        "url": "={{ $('set credentials').first().json.n8n }}/rest/tags",
        "options": {
          "redirect": {
            "redirect": {}
          },
          "response": {
            "response": {
              "neverError": true,
              "fullResponse": true,
              "responseFormat": "json"
            }
          },
          "allowUnauthorizedCerts": false
        },
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "withUsageCount",
              "value": "false"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            },
            {
              "name": "cookie",
              "value": "={{ $('login n8n').first().json.headers['set-cookie'][0] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8fd2e71d-8da6-4f28-a377-56ef12c50c33",
      "name": "my-projects",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        340,
        300
      ],
      "parameters": {
        "url": "={{ $('set credentials').item.json.n8n }}/rest/projects/my-projects",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "sec-fetch-dest",
              "value": "empty"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            },
            {
              "name": "cookie",
              "value": "={{ $json.headers['set-cookie'][0] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6bbd2296-fe2b-40d2-8e6c-d04b0987b1c6",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        480,
        300
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "28a1f311-37fd-45be-aac4-684de800f099",
      "name": "filter owned projects",
      "type": "n8n-nodes-base.filter",
      "position": [
        640,
        300
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e66c13b9-4e49-486b-812e-6a38e680207b",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.name.extractEmail() }}",
              "rightValue": "={{ $('set credentials').item.json.username }}"
            },
            {
              "id": "99059f5b-055b-48ee-93c9-9689063fcfbe",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.role }}",
              "rightValue": "project:personalOwner"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "0362220f-ebb7-4fa0-b204-ec45f9b20cf4",
      "name": "Get folders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1440,
        480
      ],
      "parameters": {
        "url": "={{ $('set credentials').item.json.n8n }}/rest/projects/{{ $('filter owned projects').item.json.id }}/folders?filter={\"excludeFolderIdAndDescendants\":\"\",\"name\":\"{{ $json.name }}\"}&sortBy=updatedAt:desc",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {}
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            },
            {
              "name": "cookie",
              "value": "={{ $('login n8n').item.json.headers['set-cookie'][0] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b03373b9-ff14-4e8f-8d00-96755390d252",
      "name": "Split Out2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1800,
        380
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "00ad1ad3-5c55-40e9-8209-2c60fb8b5a0a",
      "name": "Remove Duplicates",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        2140,
        380
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "name"
      },
      "typeVersion": 2
    },
    {
      "id": "ac6c24e3-f095-48e2-a007-e5f07b7ff2a0",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1240,
        320
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "bcb53003-7473-47ec-82c3-2e954ae26e90",
      "name": "get workflows",
      "type": "n8n-nodes-base.n8n",
      "position": [
        3040,
        720
      ],
      "parameters": {
        "filters": {
          "tags": "={{ $json.tag }}"
        },
        "requestOptions": {}
      },
      "credentials": {
        "n8nApi": {
          "id": "qMPcwXYtxelKJQhF",
          "name": "n8n account✅"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ddf83b3b-dffb-46b8-ab4b-38d19e1672b7",
      "name": "Move workflow to folder",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3240,
        720
      ],
      "parameters": {
        "url": "={{ $('set credentials').item.json.n8n }}/rest/workflows/{{ $json.id }}",
        "method": "PATCH",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "parentFolderId",
              "value": "={{ $('set global').item.json['folder id'] }}"
            },
            {
              "name": "versionId",
              "value": "={{ $json.versionId }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            },
            {
              "name": "cookie",
              "value": "={{ $('login n8n').item.json.headers['set-cookie'][0] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a611394f-418d-42d5-b26c-095c17043a86",
      "name": "Normalize names",
      "type": "n8n-nodes-base.set",
      "position": [
        1980,
        380
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a0d33a3e-f13b-438d-af1b-a4ff644b9373",
              "name": "name",
              "type": "string",
              "value": "={{ $json.name.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ') }}"
            },
            {
              "id": "abff18b8-ea51-4cc0-8e88-f326534931ec",
              "name": "tag",
              "type": "string",
              "value": "={{ $('Loop Over Items').item.json.name }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "e351c926-cf6e-4f61-9a7a-46338368c66e",
      "name": "Limit1",
      "type": "n8n-nodes-base.limit",
      "position": [
        2420,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c5d0c6b1-e478-40da-b9b7-15a60d3439dc",
      "name": "Create folders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2260,
        640
      ],
      "parameters": {
        "url": "={{ $('set credentials').item.json.n8n }}/rest/projects/{{ $('filter owned projects').item.json.id }}/folders",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "name",
              "value": "={{ $json.name }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json, text/plain, */*"
            },
            {
              "name": "accept-language",
              "value": "en-US,en;q=0.9"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
            },
            {
              "name": "cookie",
              "value": "={{ $('login n8n').item.json.headers['set-cookie'][0] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e7ab539f-6795-45eb-b23d-11ee13d3a17e",
      "name": "set folder name + id",
      "type": "n8n-nodes-base.set",
      "position": [
        2800,
        640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b4743119-ab58-44d8-b881-877de84e82e9",
              "name": "name",
              "type": "string",
              "value": "={{ $json.data.name }}"
            },
            {
              "id": "42ad0f03-f7c1-424f-9429-0b5402b60cc6",
              "name": "folder id",
              "type": "string",
              "value": "={{ $json.data.id }}"
            },
            {
              "id": "9ac73fd6-cfd9-47a3-8f28-d0238ebccaf9",
              "name": "tag",
              "type": "string",
              "value": "={{ $('Edit Fields').first().json.tag }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8daa7475-4ac3-46b4-9681-b4c80002db06",
      "name": "set folder name + id1",
      "type": "n8n-nodes-base.set",
      "position": [
        2780,
        360
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b4743119-ab58-44d8-b881-877de84e82e9",
              "name": "name",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "42ad0f03-f7c1-424f-9429-0b5402b60cc6",
              "name": "folder id",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "9ac73fd6-cfd9-47a3-8f28-d0238ebccaf9",
              "name": "tag",
              "type": "string",
              "value": "={{ $('Normalize names').item.json.tag }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "688107fc-03e4-4e7f-9e51-ad8d30822566",
      "name": "set global",
      "type": "n8n-nodes-base.set",
      "position": [
        3020,
        480
      ],
      "parameters": {
        "options": {},
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "39027caf-6097-47cf-86c5-70882c45062d",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        2280,
        380
      ],
      "parameters": {
        "options": {
          "ignoreCase": true
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": false,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c7bf8dcd-6e97-4908-a4c2-a197d452ffc1",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "={{ $('Loop Over Items').first().json.name }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "1fcaf2d9-4aef-435d-968f-b8ecfea8a1ea",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1820,
        640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6dae439c-b0b1-4058-832f-9308fda265fc",
              "name": "name",
              "type": "string",
              "value": "={{ $('Loop Over Items').item.json.name }}"
            },
            {
              "id": "3c1f1bf1-d6ae-4111-b091-2b05a62c15e9",
              "name": "tag",
              "type": "string",
              "value": "={{ $('Loop Over Items').item.json.name }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1dea92e4-9b93-4b7e-8496-020731864219",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -160,
        300
      ],
      "webhookId": "d7a3218f-0b12-4966-bf07-edd8acffe5e8",
      "parameters": {
        "options": {
          "buttonLabel": "Submit"
        },
        "formTitle": "Tags to Folders",
        "formFields": {
          "values": [
            {
              "fieldType": "html"
            }
          ]
        },
        "formDescription": "Convert all tags into folders"
      },
      "typeVersion": 2.2
    },
    {
      "id": "926f64a9-e5ef-4f99-8938-83b09c7cc13c",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        360,
        580
      ],
      "parameters": {
        "jsCode": "function capitalizeFirstLetter(val) {\n  const str = String(val).trim();\n  return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n// Get raw comma-separated string\nconst raw = $json.name;\n\n// Step 1: Split, clean, and filter\nconst values = raw\n  .split(',')\n  .map(x => x.trim())\n  .filter(x => x.length > 0 && !/^[A-Za-z0-9]{10,}$/.test(x)) // filter junk-like tokens\n  .map(x => ({ option: capitalizeFirstLetter(x) }));\n\n// Step 2: Add [create new]\nvalues.push({ option: \"[create new]\" });\n\n// Step 3: Build form config\nconst formOptions = {\n  fieldLabel: \"Dropdown Options\",\n  fieldType: \"dropdown\",\n  requiredField: true,\n  fieldOptions: {\n    values\n  }\n};\n\n// Step 4: Return as stringified JSON\nreturn [\n  {\n    json: {\n      fieldLabel: \"Dropdown Options\",\n      fieldType: \"dropdown\",\n      requiredField: true,\n      fieldOptions: {\n        values: values\n      }\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "4c3b4a14-d0ec-449d-b222-cd4a7c05b2bb",
      "name": "If no folder",
      "type": "n8n-nodes-base.if",
      "position": [
        1620,
        480
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e10c2b8e-bdc0-476e-aaed-886e99d4ed37",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.count }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a29325c5-5543-463c-9dc9-ec572afc0b82",
      "name": "If folder exists",
      "type": "n8n-nodes-base.if",
      "position": [
        2580,
        380
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "70916c0d-531b-4cae-9fac-ae40aa3f7453",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d65e17fb-8c4b-4412-8d81-b7fa0d540b81",
      "name": "set name",
      "type": "n8n-nodes-base.set",
      "position": [
        2020,
        640
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e7d24d6b-0d97-4e47-b0d4-43682eef686d",
              "name": "name",
              "type": "string",
              "value": "={{ $json.name.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ') }}"
            },
            {
              "id": "52fb820d-5a8a-434b-a99f-db035714d8e3",
              "name": "tag",
              "type": "string",
              "value": "={{ $json.tag }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "104af4eb-f087-4c4f-ad69-058f7fbe5407",
      "name": "end import",
      "type": "n8n-nodes-base.form",
      "position": [
        1660,
        160
      ],
      "webhookId": "3605aadf-17f1-4443-8950-e4d506a61415",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "Import complete",
        "completionMessage": "=Successfully imported {{ $('pass all items').all().length }} workflows to the folders {{ $('select tags to move').item.json['Dropdown Options'] }}"
      },
      "typeVersion": 1
    },
    {
      "id": "31441d1e-8675-4a6b-bf3d-5f7230a6c173",
      "name": "pass all items",
      "type": "n8n-nodes-base.set",
      "position": [
        1480,
        160
      ],
      "parameters": {
        "options": {},
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "287704cc-7a43-4ffc-873e-b19920764b1e",
      "name": "select tags to move",
      "type": "n8n-nodes-base.form",
      "position": [
        580,
        580
      ],
      "webhookId": "72c3db6c-542a-4df9-a10a-d63ce8a2f33b",
      "parameters": {
        "options": {},
        "defineForm": "json",
        "jsonOutput": "=[\t{\n\t\t\"fieldLabel\": \"Dropdown Options\",\n\t\t\"fieldType\": \"dropdown\",\n\t\t\"fieldOptions\": {\n\t\t\t\"values\": {{ $json.fieldOptions.values.toJsonString() }}\n\t\t},\n\t\t\"requiredField\": true,\n        \"multiselect\": true \n\t}\n\n] "
      },
      "typeVersion": 1
    },
    {
      "id": "df8831e6-d587-4220-b602-8c06b3627d11",
      "name": "extract name from form",
      "type": "n8n-nodes-base.set",
      "position": [
        1020,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f3bbf61c-6f60-4b51-a2b4-05d92d4fe000",
              "name": "name",
              "type": "string",
              "value": "={{ $json['Dropdown Options'] || $json['[\\'Dropdown Options\\']'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6340d3b0-9059-463c-bd78-2789156f47a8",
      "name": "Split Out the tags",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        780,
        580
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "['Dropdown Options']"
      },
      "typeVersion": 1
    },
    {
      "id": "5f6dc440-7be1-432f-88c5-f05f5f3939b1",
      "name": "tags to string",
      "type": "n8n-nodes-base.set",
      "position": [
        140,
        580
      ],
      "parameters": {
        "options": {
          "ignoreConversionErrors": true
        },
        "assignments": {
          "assignments": [
            {
              "id": "ce3e2cf1-a37e-476c-934b-355a477c91d2",
              "name": "name",
              "type": "array",
              "value": "={{ $json.body.data.map(item => item.name )}} "
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8784bdaf-0100-4f91-8631-b4ad4518fa33",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        220
      ],
      "parameters": {
        "width": 960,
        "height": 260,
        "content": "## Step 1\nLogin to n8n, and get the tags we have for our personal owned projects"
      },
      "typeVersion": 1
    },
    {
      "id": "f27df4ec-c415-4077-8037-0bfe573aa4bf",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        500
      ],
      "parameters": {
        "width": 960,
        "height": 280,
        "content": "## Step 2\nExtract the tags as a json string, and format this into a suitable format for our response form for user to select the tags they want to work with"
      },
      "typeVersion": 1
    },
    {
      "id": "8966e043-e358-4ba3-bc12-406c104b7dd1",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        240
      ],
      "parameters": {
        "color": 2,
        "width": 420,
        "height": 260,
        "content": "## Step 3\nExtract the form details and loop over each tag to process"
      },
      "typeVersion": 1
    },
    {
      "id": "8b0bdded-cbeb-471a-ba74-ca7c6aaa34f2",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1420,
        380
      ],
      "parameters": {
        "color": 3,
        "width": 340,
        "height": 240,
        "content": "## Step 3\nWe search for the folders and filter based on the number of folders found"
      },
      "typeVersion": 1
    },
    {
      "id": "be088523-e64a-4251-9c5c-355342c3ba98",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1780,
        300
      ],
      "parameters": {
        "width": 940,
        "height": 220,
        "content": "## Step 4 a) \nIf more than 1 folder is found, we dedupe the tags and limit to one, then use that as the folder"
      },
      "typeVersion": 1
    },
    {
      "id": "6b08db71-dca5-4bb8-bb0c-4599c8e53bb1",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1780,
        560
      ],
      "parameters": {
        "width": 680,
        "height": 220,
        "content": "## Step 4 b) \nIf no folder is found, we create a new folder "
      },
      "typeVersion": 1
    },
    {
      "id": "f96f9211-e076-472c-a7cd-abf58b4662ff",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2740,
        260
      ],
      "parameters": {
        "color": 5,
        "width": 420,
        "height": 480,
        "content": "## Step 5\n\nMerge the paths so we use one workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "f7f253bd-0b3a-48bb-97f5-1a8cf82b9b7e",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2960,
        660
      ],
      "parameters": {
        "color": 4,
        "width": 480,
        "height": 240,
        "content": "## Step 6\nGet the workflows and move them to the respective folders"
      },
      "typeVersion": 1
    },
    {
      "id": "1d10ecf9-48e4-47d9-9d79-69ac1e375827",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1440,
        80
      ],
      "parameters": {
        "width": 380,
        "height": 220,
        "content": "## Step 7\nRespond with a success message"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "select tags to move",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "Limit1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit1": {
      "main": [
        [
          {
            "node": "If folder exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get tags": {
      "main": [
        [
          {
            "node": "tags to string",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set name": {
      "main": [
        [
          {
            "node": "Create folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "filter owned projects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "login n8n": {
      "main": [
        [
          {
            "node": "my-projects",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out2": {
      "main": [
        [
          {
            "node": "Normalize names",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set global": {
      "main": [
        [
          {
            "node": "get workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "set name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get folders": {
      "main": [
        [
          {
            "node": "If no folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "my-projects": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If no folder": {
      "main": [
        [
          {
            "node": "Split Out2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "get workflows": {
      "main": [
        [
          {
            "node": "Move workflow to folder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create folders": {
      "main": [
        [
          {
            "node": "set folder name + id",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "pass all items": {
      "main": [
        [
          {
            "node": "end import",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "tags to string": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "pass all items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get folders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize names": {
      "main": [
        [
          {
            "node": "Remove Duplicates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set credentials": {
      "main": [
        [
          {
            "node": "login n8n",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If folder exists": {
      "main": [
        [
          {
            "node": "set folder name + id1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "set name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicates": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "set credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out the tags": {
      "main": [
        [
          {
            "node": "extract name from form",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "select tags to move": {
      "main": [
        [
          {
            "node": "Split Out the tags",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set folder name + id": {
      "main": [
        [
          {
            "node": "set global",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "filter owned projects": {
      "main": [
        [
          {
            "node": "get tags",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "set folder name + id1": {
      "main": [
        [
          {
            "node": "set global",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "extract name from form": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Move workflow to folder": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n workflows, gestion de projet : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes de développement et de gestion de projet qui utilisent n8n pour automatiser leurs processus. Il est idéal pour les entreprises de taille moyenne à grande qui cherchent à optimiser leur gestion des workflows et à améliorer leur efficacité opérationnelle.

Workflow n8n workflows, gestion de projet : problÚme résolu

Ce workflow rĂ©sout le problĂšme de la gestion manuelle des workflows et des tags dans n8n, qui peut ĂȘtre chronophage et sujet Ă  des erreurs. En automatisant ces processus, les utilisateurs peuvent Ă©viter les doublons, garantir une meilleure organisation et rĂ©duire le temps consacrĂ© Ă  des tĂąches administratives. Le rĂ©sultat est une gestion plus fluide et efficace des projets, permettant aux Ă©quipes de se concentrer sur l'essentiel.

Workflow n8n workflows, gestion de projet : étapes du workflow

Étape 1 : Le workflow commence par un dĂ©clencheur de type 'formTrigger' qui s'active lors de la soumission d'un formulaire.

  • Étape 1 : Il se connecte Ă  l'API n8n pour rĂ©cupĂ©rer les projets existants.
  • Étape 2 : Les projets sont filtrĂ©s pour ne conserver que ceux qui sont possĂ©dĂ©s par l'utilisateur.
  • Étape 3 : Si des dossiers n'existent pas, ils sont créés.
  • Étape 4 : Les workflows sont dĂ©placĂ©s dans les dossiers appropriĂ©s, et des Ă©tapes de normalisation des noms sont appliquĂ©es.
  • Étape 5 : Enfin, les doublons sont supprimĂ©s pour assurer une gestion optimale.

Workflow n8n workflows, gestion de projet : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de l'API n8n dans les noeuds de type 'httpRequest'. Il est également possible d'ajuster les critÚres de filtrage dans le noeud 'filter owned projects' pour mieux répondre à vos besoins spécifiques. Pensez à adapter les noms des dossiers créés dans le noeud 'Create folders' pour qu'ils correspondent à votre structure organisationnelle. Enfin, vous pouvez ajouter d'autres intégrations ou services n8n selon vos exigences.