Workflow n8n

Automatisation n8n : importation de workflows depuis des fichiers

Ce workflow n8n a pour objectif d'automatiser le processus d'importation de workflows à partir de fichiers, facilitant ainsi la gestion des automatisations pour les équipes. Dans un contexte où la collaboration et l'efficacité sont essentielles, ce workflow permet aux utilisateurs de récupérer des workflows existants, de les modifier et de les réutiliser sans effort. Les cas d'usage incluent la migration de workflows entre différentes instances ou la mise à jour de configurations sans intervention manuelle.

  • Étape 1 : le workflow commence par l'extraction des données d'un fichier via le nœud 'Extract from File'.
  • Étape 2 : les informations extraites sont ensuite traitées pour être converties en JSON grâce au nœud 'Binary to JSON'.
  • Étape 3 : les données sont fusionnées et préparées pour l'importation avec le nœud 'Merge', suivi par la création d'un nouveau workflow à l'aide du nœud 'Create Workflow'. Ce processus inclut également des vérifications et des validations pour garantir que les données sont correctes avant l'importation. Les bénéfices business incluent une réduction significative du temps passé sur des tâches répétitives, une meilleure gestion des workflows et une augmentation de la productivité des équipes. En intégrant ce type d'automatisation n8n, les entreprises peuvent se concentrer sur des tâches à plus forte valeur ajoutée.
Tags clés :automatisationn8nworkflowsgestion de donnéesproductivité
Catégorie: Manual · Tags: automatisation, n8n, workflows, gestion de données, productivité0

Workflow n8n workflows, gestion de données, productivité : 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 données, productivité : détail des nœuds

  • Extract from File

    Ce noeud extrait des données d'un fichier selon les paramètres spécifiés.

  • Export Credentials

    Ce noeud exécute une commande pour exporter des informations d'identification.

  • Get Credentials Data

    Ce noeud lit et écrit des données dans un fichier pour obtenir des informations d'identification.

  • Binary to JSON

    Ce noeud convertit des données binaires en format JSON.

  • Merge

    Ce noeud fusionne plusieurs ensembles de données selon les options définies.

  • Collect Credentials to Replace

    Ce noeud collecte des informations d'identification à remplacer dans le workflow.

  • Settings

    Ce noeud définit des paramètres de configuration pour le workflow.

  • Prepare Request Data

    Ce noeud prépare les données de requête en exécutant du code JavaScript.

  • Get Workflows

    Ce noeud effectue une requête HTTP pour obtenir des workflows.

  • No Operation

    Ce noeud ne réalise aucune opération, servant de point de passage dans le workflow.

  • Determine Workflow Source

    Ce noeud détermine la source du workflow en fonction de conditions spécifiées.

  • Sticky Note6

    Ce noeud affiche une note autocollante avec un contenu spécifié.

  • Sticky Note2

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note7

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note8

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Error1

    Ce noeud affiche un formulaire d'erreur avec un titre et un message de complétion.

  • Error

    Ce noeud affiche un formulaire d'erreur avec un titre et un message de complétion.

  • Split Out Workflows

    Ce noeud divise les workflows en fonction d'un champ spécifié.

  • Get Workflow Names

    Ce noeud génère des noms de workflows en exécutant du code JavaScript.

  • Sort by updatedAt DESC

    Ce noeud trie les données par date de mise à jour dans l'ordre décroissant.

  • No Operation1

    Ce noeud ne réalise aucune opération, servant de point de passage dans le workflow.

  • Sticky Note9

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Rename Keys

    Ce noeud renomme des clés dans les données selon les options spécifiées.

  • Create Workflow

    Ce noeud crée un nouveau workflow avec les options et l'objet de workflow fournis.

  • Upload File

    Ce noeud permet de télécharger un fichier via un formulaire.

  • Choose Workflow

    Ce noeud permet de choisir un workflow via un formulaire.

  • Success

    Ce noeud affiche un formulaire de succès avec un titre et un message de complétion.

  • Choose Instance

    Ce noeud permet de choisir une instance via un formulaire.

  • On form submission

    Ce noeud affiche un formulaire qui se déclenche lors de la soumission d'un formulaire.

  • Generate Instance Options

    Ce noeud génère des options d'instance en exécutant du code JavaScript.

  • Sticky Note10

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note11

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note12

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note13

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note14

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Get Selected Workflow

    Ce noeud génère le workflow sélectionné en exécutant du code JavaScript.

  • Sticky Note15

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note16

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Split Out Nodes

    Ce noeud divise les nœuds en fonction d'un champ spécifié.

  • Filter Out Nodes Having Credentials

    Ce noeud filtre les nœuds ayant des informations d'identification selon des conditions définies.

  • Extract Credentials

    Ce noeud extrait des informations d'identification selon les options spécifiées.

  • Remove Duplicate Credentials by Name

    Ce noeud supprime les doublons d'informations d'identification par nom.

  • Map Credentials

    Ce noeud permet de mapper des informations d'identification via un formulaire.

  • Get Selected Credentials

    Ce noeud obtient les informations d'identification sélectionnées en exécutant du code JavaScript.

  • Add Old Names

    Ce noeud ajoute d'anciens noms aux données selon les options spécifiées.

  • Replace Credentials in Workflow

    Ce noeud remplace les informations d'identification dans le workflow en exécutant du code JavaScript.

  • Sticky Note17

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Sticky Note18

    Ce noeud affiche une note autocollante avec une couleur et un contenu définis.

  • Generate Credential Options

    Ce noeud génère des options d'informations d'identification en exécutant du code JavaScript.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "87FUCRVFV07sNlbM",
  "meta": {
    "instanceId": "505c2bdb4483cbbca32871c0acd4b60c83809f177e47e2864f71c1c1760a9b2a",
    "templateCredsSetupCompleted": true
  },
  "name": "Workflow Importer",
  "tags": [],
  "nodes": [
    {
      "id": "eb3d4912-09c3-4c17-8e2b-94dd15e145f4",
      "name": "Extract from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        2960,
        440
      ],
      "parameters": {
        "options": {},
        "operation": "fromJson",
        "destinationKey": "workflowData",
        "binaryPropertyName": "Workflow_File"
      },
      "typeVersion": 1
    },
    {
      "id": "56b7a01f-47a0-4884-9200-5f5f695ab355",
      "name": "Export Credentials",
      "type": "n8n-nodes-base.executeCommand",
      "position": [
        3180,
        620
      ],
      "parameters": {
        "command": "n8n export:credentials --all --pretty --decrypted --output=/tmp/cred"
      },
      "typeVersion": 1
    },
    {
      "id": "85de1146-4d61-45bf-b225-956d3d16e84b",
      "name": "Get Credentials Data",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        3400,
        620
      ],
      "parameters": {
        "options": {},
        "fileSelector": "/tmp/cred"
      },
      "typeVersion": 1
    },
    {
      "id": "187f1f50-472f-41ac-96e8-9c2f17fa3c00",
      "name": "Binary to JSON",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        3620,
        620
      ],
      "parameters": {
        "options": {},
        "operation": "fromJson"
      },
      "typeVersion": 1
    },
    {
      "id": "85d79317-786a-49eb-ade4-f9d0949c5bf4",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        4060,
        500
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "6976901c-a052-47fa-a754-217fd5d0f58e",
      "name": "Collect Credentials to Replace",
      "type": "n8n-nodes-base.merge",
      "position": [
        3040,
        1120
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "c5b7ab56-c833-4405-913a-1a484094a6ff",
      "name": "Settings",
      "type": "n8n-nodes-base.set",
      "position": [
        980,
        620
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8a5d50fc-95dc-40b3-a3f2-293521bab29a",
              "name": "remoteInstances",
              "type": "array",
              "value": "="
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a9287c9a-ddf4-4023-b997-bb7b12e2d0ee",
      "name": "Prepare Request Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1640,
        620
      ],
      "parameters": {
        "jsCode": "output = {};\n\nfor (const instance of $('Settings').first().json.remoteInstances) {\n  if (instance.name == $('Choose Instance').first().json.Source) {\n    output.instance = instance;\n  }\n}\n\nreturn output;"
      },
      "typeVersion": 2
    },
    {
      "id": "85ccc4bf-a465-49bf-ac17-9933f1b9d46d",
      "name": "Get Workflows",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        1860,
        620
      ],
      "parameters": {
        "url": "={{ $json.instance.baseUrl }}/workflows",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "limit",
              "value": "250"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-N8N-API-KEY",
              "value": "={{ $json.instance.apiKey }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "2d86c12d-f308-4cdc-96a4-ab4cbecd39ad",
      "name": "No Operation",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3180,
        440
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8ef0f34d-2468-450e-8a3c-e3d9ad9e371b",
      "name": "Determine Workflow Source",
      "type": "n8n-nodes-base.if",
      "position": [
        760,
        500
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "f1d93a30-01c9-4141-85b2-8ceb762b9e86",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.Source }}",
              "rightValue": "File Upload"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3ff270a7-5837-40b5-85b4-da3b28ae6147",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        920,
        520
      ],
      "parameters": {
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "## Setup instances\nEach instnce requires a name, apiKey and baseURL"
      },
      "typeVersion": 1
    },
    {
      "id": "4d0d4684-5ffc-4e12-8d05-55245339fd96",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        380,
        680
      ],
      "parameters": {
        "color": 5,
        "width": 535.6419634856759,
        "height": 223.19907940161124,
        "content": "## Instances config example\n```\n[\n  {\n    \"name\": \"n8n-test\",\n    \"apiKey\": \"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\",\n    \"baseUrl\": \"https://n8n-test.example.com/api/v1\"\n  },\n  {\n    ...\n  }\n]\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "e76e291e-511b-4612-836f-ae6f7af1d3de",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        400
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "A form which collects the source option.\n*Consider securing the form using Basic Auth.*"
      },
      "typeVersion": 1
    },
    {
      "id": "38ecbde8-9081-4509-9fa3-c5b2d568ebad",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        700,
        400
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Switch between the available options"
      },
      "typeVersion": 1
    },
    {
      "id": "efa893aa-fce5-45ff-a234-6e73235a33ea",
      "name": "Error1",
      "type": "n8n-nodes-base.form",
      "position": [
        3700,
        1220
      ],
      "webhookId": "5c7933f0-f09a-4bc6-9e68-cf73e8fb5813",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "⚠️ Import failed",
        "completionMessage": "=Please check the workflow settings"
      },
      "typeVersion": 1
    },
    {
      "id": "e5edd30e-6396-407a-bd3b-a5e0f66c7e3a",
      "name": "Error",
      "type": "n8n-nodes-base.form",
      "position": [
        2080,
        700
      ],
      "webhookId": "5c7933f0-f09a-4bc6-9e68-cf73e8fb5813",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "⚠️ Failed retrieving workflows",
        "completionMessage": "=Please check the workflow settings"
      },
      "typeVersion": 1
    },
    {
      "id": "c410045e-4adf-4304-910a-7cd5868892d3",
      "name": "Split Out Workflows",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2080,
        540
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "data"
      },
      "typeVersion": 1
    },
    {
      "id": "5fafa399-0c6b-4db0-9b01-319a02368eee",
      "name": "Get Workflow Names",
      "type": "n8n-nodes-base.code",
      "position": [
        2520,
        540
      ],
      "parameters": {
        "jsCode": "dropDownValues = [];\n\nfor (const workflow of $input.all()) {\n  dropDownValues.push({\"option\": workflow.json.name});\n}\n\nreturn { \"options\": JSON.stringify(dropDownValues) };"
      },
      "typeVersion": 2
    },
    {
      "id": "b7408a47-97ff-45da-b8e7-bb2380f61155",
      "name": "Sort by updatedAt DESC",
      "type": "n8n-nodes-base.sort",
      "position": [
        2300,
        540
      ],
      "parameters": {
        "options": {},
        "sortFieldsUi": {
          "sortField": [
            {
              "order": "descending",
              "fieldName": "updatedAt"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "74741a71-79b8-4479-9dac-826db7984620",
      "name": "No Operation1",
      "type": "n8n-nodes-base.noOp",
      "position": [
        4280,
        680
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "89657c6f-a703-4145-b690-7234583bbe7a",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1500,
        1240
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 294.9905826938254,
        "content": "## Map Credentials\nBeing mapped by name since one workflow can have multiple credentials of the same type."
      },
      "typeVersion": 1
    },
    {
      "id": "a2d21bb5-5118-4ea2-920b-1c05570da610",
      "name": "Rename Keys",
      "type": "n8n-nodes-base.renameKeys",
      "position": [
        3840,
        620
      ],
      "parameters": {
        "keys": {
          "key": [
            {
              "newKey": "allCredentials",
              "currentKey": "data"
            }
          ]
        },
        "additionalOptions": {}
      },
      "typeVersion": 1
    },
    {
      "id": "d756edc6-cf0d-4a35-b29c-99e5ec41c4db",
      "name": "Create Workflow",
      "type": "n8n-nodes-base.n8n",
      "onError": "continueErrorOutput",
      "position": [
        3480,
        1120
      ],
      "parameters": {
        "operation": "create",
        "requestOptions": {},
        "workflowObject": "={{ $json.toJsonString() }}"
      },
      "credentials": {
        "n8nApi": {
          "id": "taiQiy4KxXUI20Af",
          "name": "n8n account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4d75a5b1-5227-41a4-87cc-67a5a8074f37",
      "name": "Upload File",
      "type": "n8n-nodes-base.form",
      "position": [
        1420,
        440
      ],
      "webhookId": "b9850dfc-ecf9-45c8-ae68-39327c6a0143",
      "parameters": {
        "options": {
          "formTitle": "Upload File",
          "formDescription": "Choose an n8n workflow file"
        },
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Workflow File",
              "requiredField": true,
              "acceptFileTypes": ".json"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5e5e3ece-00b3-4790-89e0-35d3c8d03b7d",
      "name": "Choose Workflow",
      "type": "n8n-nodes-base.form",
      "position": [
        2740,
        540
      ],
      "webhookId": "100af69b-5203-48d3-8e90-1e846d0752d4",
      "parameters": {
        "options": {
          "formTitle": "Choose Workflow",
          "formDescription": "Choose the remote workflow which should be imported"
        },
        "defineForm": "json",
        "jsonOutput": "=[\n   {\n      \"fieldLabel\": \"Workflow\",\n      \"fieldType\": \"dropdown\",\n      \"requiredField\": true,\n      \"fieldOptions\": {\n        \"values\": {{ $json.options }}\n      }\n   }\n]"
      },
      "typeVersion": 1
    },
    {
      "id": "7fcc236c-dd97-4a1e-bf3d-d85aba520938",
      "name": "Success",
      "type": "n8n-nodes-base.form",
      "position": [
        3700,
        1020
      ],
      "webhookId": "5c7933f0-f09a-4bc6-9e68-cf73e8fb5813",
      "parameters": {
        "options": {},
        "operation": "completion",
        "completionTitle": "✅ Import completed",
        "completionMessage": "=The workflow has been created successfully. {{ $if($('Get Missing Credentials').all().length > 0, \"Please head over to your credentials and update all new entries with a trailing ⚠️ symbol.\", \"\") }} "
      },
      "typeVersion": 1
    },
    {
      "id": "27736a52-af15-47f8-8186-d486b2968256",
      "name": "Choose Instance",
      "type": "n8n-nodes-base.form",
      "position": [
        1420,
        620
      ],
      "webhookId": "2a40fe8d-7b6b-4695-845c-2d278f5bf93e",
      "parameters": {
        "options": {
          "formTitle": "Select Source Instance",
          "formDescription": "Choose the n8n instance where to retrieve workflows from"
        },
        "defineForm": "json",
        "jsonOutput": "=[\n   {\n      \"fieldLabel\": \"Source\",\n      \"fieldType\": \"dropdown\",\n      \"requiredField\": true,\n      \"fieldOptions\": {\n        \"values\": {{ $json.options }}\n      }\n   }\n]"
      },
      "typeVersion": 1
    },
    {
      "id": "9b83c34d-0b0b-47bc-b4a7-27eed0e796fb",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        540,
        500
      ],
      "webhookId": "2c9b2fa1-3235-4b73-a6e0-73392dcb9ed0",
      "parameters": {
        "options": {
          "buttonLabel": "Continue",
          "appendAttribution": false
        },
        "formTitle": "Workflow Import",
        "formFields": {
          "values": [
            {
              "fieldType": "dropdown",
              "fieldLabel": "Source",
              "fieldOptions": {
                "values": [
                  {
                    "option": "File Upload"
                  },
                  {
                    "option": "Remote Instance"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "This tool allows importing an n8n workflow from a file or another n8n instance\n\nKeep in mind that your destination n8n instance (this environment) should always run on an equal or newer version then compared to the source."
      },
      "typeVersion": 2.2
    },
    {
      "id": "f6d45cd9-a091-4c8b-8ef0-6815a1adb0f1",
      "name": "Generate Instance Options",
      "type": "n8n-nodes-base.code",
      "position": [
        1200,
        620
      ],
      "parameters": {
        "jsCode": "dropDownValues = [];\n\nfor (const instance of $input.first().json.remoteInstances) {\n  dropDownValues.push({\"option\": instance.name});\n}\n\nreturn { \"options\": JSON.stringify(dropDownValues) };"
      },
      "typeVersion": 2
    },
    {
      "id": "73717c97-4579-4e49-ac33-4aada3bcaf55",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1140,
        520
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Prepare a list of options for the next form"
      },
      "typeVersion": 1
    },
    {
      "id": "0537d195-3885-4903-8a41-56915f7b64de",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1360,
        360
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 416.4415465717213,
        "content": "Request more input from the user"
      },
      "typeVersion": 1
    },
    {
      "id": "43ee5820-e236-49f9-b89b-e4c5d4dd4188",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1580,
        520
      ],
      "parameters": {
        "color": 7,
        "width": 435.59135570107514,
        "height": 255.86856541619233,
        "content": "Map Settings to selected instance and retrieve all workflows from it"
      },
      "typeVersion": 1
    },
    {
      "id": "53a42c23-af05-4e21-a936-14d2419b4530",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2020,
        440
      ],
      "parameters": {
        "color": 7,
        "width": 656.1389569291234,
        "height": 255.86856541619233,
        "content": "Prepare a list of options for the next form"
      },
      "typeVersion": 1
    },
    {
      "id": "fd103846-04a6-4fb0-aba4-6230a85a7555",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2680,
        440
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Let the user choose a workflow from a list"
      },
      "typeVersion": 1
    },
    {
      "id": "e58bdf1e-fcda-4b68-9798-24de0c7c6bd9",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3120,
        560
      ],
      "parameters": {
        "color": 7,
        "width": 875.9451799951569,
        "height": 216.1478580797073,
        "content": "Retrieve all credentials from this instance and convert the data to the final JSON format"
      },
      "typeVersion": 1
    },
    {
      "id": "08855416-ca33-4344-b96b-4564d9841dfd",
      "name": "Get Selected Workflow",
      "type": "n8n-nodes-base.code",
      "position": [
        2960,
        620
      ],
      "parameters": {
        "jsCode": "for (const workflow of $('Get Workflows').first().json.data) {\n  if (workflow.name == $input.first().json.Workflow) {\n    \n    return { \"workflowData\": workflow };\n  }\n}\n\nreturn false;"
      },
      "typeVersion": 2
    },
    {
      "id": "9a09a6b5-2b8d-461e-b63f-91100c3e7974",
      "name": "Sticky Note15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2900,
        360
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 416.4415465717213,
        "content": "Convert the retrieved workflow into the final JSON format"
      },
      "typeVersion": 1
    },
    {
      "id": "269c32c3-224b-42df-bd27-7718374cb343",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4000,
        420
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Combine the workflow and credential data to one item"
      },
      "typeVersion": 1
    },
    {
      "id": "c9bbc713-3ac7-42d7-85c3-0c8aa22201d4",
      "name": "Split Out Nodes",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1060,
        1020
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "workflowData.nodes"
      },
      "typeVersion": 1
    },
    {
      "id": "e4c37af5-64de-4d40-9ff1-3a622ea40b86",
      "name": "Filter Out Nodes Having Credentials",
      "type": "n8n-nodes-base.filter",
      "position": [
        1280,
        1020
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b14ec02c-c52c-4907-8f55-ebb168a8b10e",
              "operator": {
                "type": "object",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.credentials }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bdb20dfd-1b47-4b50-a938-19f7790d180b",
      "name": "Extract Credentials",
      "type": "n8n-nodes-base.set",
      "position": [
        1500,
        1020
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b37508a3-188e-4e6e-b251-b6a34ac193be",
              "name": "type",
              "type": "string",
              "value": "={{ $json.credentials.keys()[0] }}"
            },
            {
              "id": "fc308784-91ec-4b6b-8bca-2c01472574a7",
              "name": "name",
              "type": "string",
              "value": "={{ $json.credentials[$json.credentials.keys()[0]].name }}"
            },
            {
              "id": "a3142dc0-021d-4191-815b-d5cf6d9fe6a8",
              "name": "id",
              "type": "string",
              "value": "={{ $json.credentials[$json.credentials.keys()[0]].id }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "554e0ee3-e722-4dcf-b82b-ea1ea59a037e",
      "name": "Remove Duplicate Credentials by Name",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        1720,
        1020
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "name"
      },
      "typeVersion": 2
    },
    {
      "id": "0da2c486-ea7a-465b-b3cd-88e09e63c06b",
      "name": "Map Credentials",
      "type": "n8n-nodes-base.form",
      "position": [
        2160,
        1020
      ],
      "webhookId": "5aca5fbe-cbff-4824-8586-cd59967dd154",
      "parameters": {
        "options": {
          "formTitle": "Map Credentials",
          "buttonLabel": "Import Workflow",
          "formDescription": "Each option is labeled with the name of the original credential. Select the according credential for each item.\n\nYou can also choose to create a new credential. It will then create an empty credential, using the name of the original one, which you can configure afterwards."
        },
        "defineForm": "json",
        "jsonOutput": "={{ $json.options }}"
      },
      "typeVersion": 1
    },
    {
      "id": "8b92114e-6aa6-4404-a7f1-6224a45acdae",
      "name": "Get Selected Credentials",
      "type": "n8n-nodes-base.code",
      "position": [
        2380,
        1220
      ],
      "parameters": {
        "jsCode": "function capitalizeFirstLetter(val) {\n    return String(val).charAt(0).toUpperCase() + String(val).slice(1);\n}\n\nlet missingCredentials = [];\nfor (const credential of $('Remove Duplicate Credentials by Name').all()) {\n  let type = credential.json.type;\n  let oldName = credential.json.name;\n  let name = $('Map Credentials').first().json[credential.json.name];\n  if (name != \"[create new]\") {\n    for (const credentialData of $('Merge').first().json.allCredentials) {\n      if (credentialData.name == name) {\n        id = credentialData.id;\n        continue;\n      }\n    }\n    missingCredentials.push({\n      \"oldName\": oldName,\n      \"name\": name,\n      \"type\": type,\n      \"id\": id\n    });\n  }\n}\n\nreturn missingCredentials;"
      },
      "typeVersion": 2
    },
    {
      "id": "bafcb91c-f441-40de-a1fd-7435206d991e",
      "name": "Add Old Names",
      "type": "n8n-nodes-base.set",
      "position": [
        2820,
        1020
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "19847be5-420a-4dd7-8a45-fed1a1cbc0b8",
              "name": "oldName",
              "type": "string",
              "value": "={{ $json.name.replace(\" ⚠️\", \"\") }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "8da7f198-5e85-4d88-907e-1e35a55bdb96",
      "name": "Replace Credentials in Workflow",
      "type": "n8n-nodes-base.code",
      "position": [
        3260,
        1120
      ],
      "parameters": {
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nlet workflowData = $('Merge').first().json.workflowData;\nfor (const credential of $input.all()) {  \n  for (const nodes of workflowData.nodes) {\n    if (nodes.credentials \n        && nodes.credentials[credential.json.type] !== undefined \n        && nodes.credentials[credential.json.type].name == credential.json.oldName) {\n      nodes.credentials[credential.json.type].id = credential.json.id;\n      nodes.credentials[credential.json.type].name = credential.json.name;\n    }\n  }\n}\n\nreturn workflowData;\n\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f370d4fb-229e-4604-a1b1-c7c0cab8a32d",
      "name": "Sticky Note17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1000,
        920
      ],
      "parameters": {
        "color": 7,
        "width": 875.6296366281999,
        "height": 257.0479807900252,
        "content": "Extract a list of all credentials from the workflow. The reference will be the old/existing name of the credential, since one workflow can contain multiple credentials of the same type."
      },
      "typeVersion": 1
    },
    {
      "id": "31c0d4b7-4682-4db1-a453-0f1d69c58665",
      "name": "Sticky Note18",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2100,
        920
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Let the user map every credential or create new ones"
      },
      "typeVersion": 1
    },
    {
      "id": "d3c5edb1-74dc-4168-a987-84cdd54714cd",
      "name": "Generate Credential Options",
      "type": "n8n-nodes-base.code",
      "position": [
        1940,
        1020
      ],
      "parameters": {
        "jsCode": "function capitalizeFirstLetter(val) {\n    return String(val).charAt(0).toUpperCase() + String(val).slice(1);\n}\n\nformOptions = [];\nfor (const item of $input.all()) {\n  dropDownValues = [];\n  for (const credential of $('Merge').first().json.allCredentials) {\n    if (credential.type == item.json.type) {\n      dropDownValues.push({\"option\": credential.name});\n    }\n  }\n  dropDownValues.push({\"option\": \"[create new]\"});\n  formOptions.push({\n      \"fieldLabel\": item.json.name,\n      \"fieldType\": \"dropdown\",\n      \"requiredField\": true,\n      \"fieldOptions\": {\n        \"values\": dropDownValues\n      }\n  });\n}\n\nreturn { \"options\": JSON.stringify(formOptions) };"
      },
      "typeVersion": 2
    },
    {
      "id": "255ff6ab-d360-49dd-b63f-9f0d99278ae4",
      "name": "Sticky Note19",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        920
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 255.86856541619233,
        "content": "Prepare a list of options for the next form"
      },
      "typeVersion": 1
    },
    {
      "id": "ae074b5a-d76a-4529-ba59-0d201dbd4e9e",
      "name": "Sticky Note20",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        920
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 456.12289999575364,
        "content": "Split mapped credentials into two streams, depending on wether they exist or not"
      },
      "typeVersion": 1
    },
    {
      "id": "1b6d26af-9d6b-4865-bd81-8a5de49bc741",
      "name": "Sticky Note21",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2540,
        919.7999999999997
      ],
      "parameters": {
        "color": 7,
        "width": 435.95830414662703,
        "height": 276.068565416192,
        "content": "Create empty credentials if the option \"[create credential]\" was selected. and add the name of the originally assigned credential for future reference"
      },
      "typeVersion": 1
    },
    {
      "id": "5ba8987a-7558-4fb8-94ef-ac2b81df5536",
      "name": "Create Empty Credentials",
      "type": "n8n-nodes-base.n8n",
      "position": [
        2600,
        1020
      ],
      "parameters": {
        "data": "={{ $json.data.toJsonString() }}",
        "name": "={{ $json.name }}",
        "resource": "credential",
        "requestOptions": {},
        "credentialTypeName": "={{ $json.type }}"
      },
      "credentials": {
        "n8nApi": {
          "id": "taiQiy4KxXUI20Af",
          "name": "n8n account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7efa8f88-f5a0-47c8-8d12-2cb8c9b0e0c7",
      "name": "Get Missing Credentials",
      "type": "n8n-nodes-base.code",
      "position": [
        2380,
        1020
      ],
      "parameters": {
        "jsCode": "function capitalizeFirstLetter(val) {\n    return String(val).charAt(0).toUpperCase() + String(val).slice(1);\n}\n\nlet missingCredentials = [];\nfor (const credential of $('Remove Duplicate Credentials by Name').all()) {\n  let type = credential.json.type;\n  let name = $('Map Credentials').first().json[credential.json.name];\n  if (name == \"[create new]\") {\n    data = {};\n    if (type.includes(\"OAuth\")) {\n      data = { \"clientId\": \"\", \"clientSecret\": \"\" };\n    }\n    missingCredentials.push({\n      \"name\": credential.json.name + \" ⚠️\",\n      \"type\": type,\n      \"data\": data\n    });\n  }\n}\n\nreturn missingCredentials;"
      },
      "typeVersion": 2
    },
    {
      "id": "2394952f-c6db-4c6e-8f62-080c952734c9",
      "name": "Sticky Note22",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2980,
        1020
      ],
      "parameters": {
        "color": 7,
        "width": 435.95830414662703,
        "height": 276.068565416192,
        "content": "Gather all new credential data and update the workflow accordingly. The oldName is being used as a reference during the search. "
      },
      "typeVersion": 1
    },
    {
      "id": "4ee2a621-29c9-4d23-b222-0b31ff1cc903",
      "name": "Sticky Note23",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3420,
        1020
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 275.841854198618,
        "content": "Create the updated workflow on this instance"
      },
      "typeVersion": 1
    },
    {
      "id": "e041c560-e847-472e-888e-0b6b3edb8998",
      "name": "Sticky Note24",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3640,
        920
      ],
      "parameters": {
        "color": 7,
        "width": 216.47293010628914,
        "height": 456.12289999575364,
        "content": "Provide feedback to the user wether the process was successful or not"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5ee2c284-b417-4ab6-b0bf-effa25225dbf",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "No Operation1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Settings": {
      "main": [
        [
          {
            "node": "Generate Instance Options",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rename Keys": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Upload File": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Operation": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Add Old Names": {
      "main": [
        [
          {
            "node": "Collect Credentials to Replace",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Workflows": {
      "main": [
        [
          {
            "node": "Split Out Workflows",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Operation1": {
      "main": [
        [
          {
            "node": "Split Out Nodes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Binary to JSON": {
      "main": [
        [
          {
            "node": "Rename Keys",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Choose Instance": {
      "main": [
        [
          {
            "node": "Prepare Request Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Choose Workflow": {
      "main": [
        [
          {
            "node": "Get Selected Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Workflow": {
      "main": [
        [
          {
            "node": "Success",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Error1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Map Credentials": {
      "main": [
        [
          {
            "node": "Get Missing Credentials",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Selected Credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Nodes": {
      "main": [
        [
          {
            "node": "Filter Out Nodes Having Credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Export Credentials",
            "type": "main",
            "index": 0
          },
          {
            "node": "No Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Export Credentials": {
      "main": [
        [
          {
            "node": "Get Credentials Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Workflow Names": {
      "main": [
        [
          {
            "node": "Choose Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Determine Workflow Source",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Credentials": {
      "main": [
        [
          {
            "node": "Remove Duplicate Credentials by Name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out Workflows": {
      "main": [
        [
          {
            "node": "Sort by updatedAt DESC",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Credentials Data": {
      "main": [
        [
          {
            "node": "Binary to JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Request Data": {
      "main": [
        [
          {
            "node": "Get Workflows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Selected Workflow": {
      "main": [
        [
          {
            "node": "Export Credentials",
            "type": "main",
            "index": 0
          },
          {
            "node": "No Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sort by updatedAt DESC": {
      "main": [
        [
          {
            "node": "Get Workflow Names",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Missing Credentials": {
      "main": [
        [
          {
            "node": "Create Empty Credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Empty Credentials": {
      "main": [
        [
          {
            "node": "Add Old Names",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Selected Credentials": {
      "main": [
        [
          {
            "node": "Collect Credentials to Replace",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Determine Workflow Source": {
      "main": [
        [
          {
            "node": "Upload File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Settings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Instance Options": {
      "main": [
        [
          {
            "node": "Choose Instance",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Credential Options": {
      "main": [
        [
          {
            "node": "Map Credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect Credentials to Replace": {
      "main": [
        [
          {
            "node": "Replace Credentials in Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace Credentials in Workflow": {
      "main": [
        [
          {
            "node": "Create Workflow",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Out Nodes Having Credentials": {
      "main": [
        [
          {
            "node": "Extract Credentials",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Remove Duplicate Credentials by Name": {
      "main": [
        [
          {
            "node": "Generate Credential Options",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n workflows, gestion de données, productivité : pour qui est ce workflow ?

Ce workflow s'adresse principalement aux équipes techniques et aux responsables de l'automatisation au sein des entreprises, notamment celles qui utilisent n8n pour gérer leurs processus. Il est idéal pour les entreprises de taille moyenne à grande qui cherchent à optimiser leur gestion des workflows et à réduire les erreurs manuelles.

Workflow n8n workflows, gestion de données, productivité : problème résolu

Ce workflow résout le problème de la complexité et du temps nécessaire pour importer des workflows à partir de fichiers. Il élimine les frustrations liées à la gestion manuelle des données et réduit les risques d'erreurs lors de l'importation. Grâce à cette automatisation, les utilisateurs peuvent rapidement récupérer et utiliser des workflows, ce qui leur permet de gagner en efficacité et de se concentrer sur des tâches plus stratégiques.

Workflow n8n workflows, gestion de données, productivité : étapes du workflow

Étape 1 : le flux commence par l'extraction des données d'un fichier via le nœud 'Extract from File'.

  • Étape 1 : les données extraites sont ensuite converties en format JSON avec le nœud 'Binary to JSON'.
  • Étape 2 : les informations sont fusionnées à l'aide du nœud 'Merge' pour préparer les données à l'importation.
  • Étape 3 : le nœud 'Create Workflow' est utilisé pour créer un nouveau workflow basé sur les données traitées.
  • Étape 4 : des vérifications sont effectuées pour s'assurer que toutes les informations sont correctes avant de finaliser l'importation.

Workflow n8n workflows, gestion de données, productivité : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier les paramètres du nœud 'Extract from File' pour spécifier le type de fichier à importer. Il est également possible d'ajuster les paramètres du nœud 'Create Workflow' pour définir les configurations spécifiques de votre nouveau workflow. Si vous souhaitez intégrer d'autres outils, envisagez de connecter des nœuds supplémentaires pour enrichir le processus. Assurez-vous de tester le flux après chaque modification pour garantir son bon fonctionnement et sa sécurité.