Convertisseur CSV vers JSON (gestion d'erreurs et notifications Slack)

Avancé

Ceci est unEngineeringworkflow d'automatisation du domainecontenant 18 nœuds.Utilise principalement des nœuds comme If, Set, Code, Slack, Switch. Convertisseur de fichiers CSV vers JSON avec gestion des erreurs et notifications Slack

Prérequis
  • Token Bot Slack ou URL Webhook
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Peut nécessiter les informations d'identification d'authentification de l'API cible

Catégorie

Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "nodes": [
    {
      "id": "b73fed9b-d56c-4175-a310-8c09ed51acd2",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        60
      ],
      "parameters": {
        "width": 464,
        "height": 303,
        "content": "## Testing \n\nTesting can be done with CURL or similar.\n\nFor File posting using Form Data\ncurl -X POST \"https://yoururl.com/webhook-test/tool/csv-to-json\" \\\n     -H \"Content-Type: text/csv\" \\\n     --data-binary @path/to/your/file.csv\n\n\nThis can also be tested using the Test workflow"
      },
      "typeVersion": 1
    },
    {
      "id": "6ed4b2cc-444f-44e2-ab91-34337acd7a9b",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        580
      ],
      "parameters": {
        "color": 4,
        "width": 396,
        "height": 256,
        "content": "## Response\nWhere possible we will be returning a binary object.\n```\nIf there is an error\n```\n{\n  \"status\": \"error\",\n  \"data\": \"error message to display\"\n}\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "4eff962e-e636-4704-835a-672ccd705e16",
      "name": "Extraire depuis un fichier",
      "type": "n8n-nodes-base.extractFromFile",
      "onError": "continueErrorOutput",
      "position": [
        680,
        80
      ],
      "parameters": {
        "options": {},
        "binaryPropertyName": "data0"
      },
      "typeVersion": 1
    },
    {
      "id": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
      "name": "Réponse d'erreur",
      "type": "n8n-nodes-base.respondToWebhook",
      "onError": "continueErrorOutput",
      "position": [
        1900,
        900
      ],
      "parameters": {
        "options": {
          "responseCode": 500
        },
        "respondWith": "json",
        "responseBody": "{\n  \"status\": \"error\",\n  \"data\": \"There was a problem converting your CSV. Please refresh the page and try again.\"\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "a7d34aba-6ded-4cc8-8866-7d4aa6ae3255",
      "name": "Réponse de succès",
      "type": "n8n-nodes-base.respondToWebhook",
      "onError": "continueErrorOutput",
      "position": [
        1920,
        220
      ],
      "parameters": {
        "options": {
          "responseCode": 200
        },
        "respondWith": "json",
        "responseBody": "={\n  \"status\": \"OK\",\n  \"data\": {{ JSON.stringify($json.jsondata) }}\n}"
      },
      "typeVersion": 1
    },
    {
      "id": "3484b148-4ba5-4b54-9401-44010ac31178",
      "name": "Modifier le champ",
      "type": "n8n-nodes-base.set",
      "onError": "continueErrorOutput",
      "position": [
        680,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b2e3bec3-221e-4f1d-b439-f75174f68ed1",
              "name": "csv",
              "type": "string",
              "value": "={{ $json.body }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "f35635fe-8943-486b-b5fa-4f566dd8f938",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        40
      ],
      "parameters": {
        "color": 7,
        "width": 2298,
        "height": 1027,
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "cede2fad-f0ee-4082-a403-81f6d8eb188e",
      "name": "Commutateur",
      "type": "n8n-nodes-base.switch",
      "position": [
        340,
        400
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "File",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "object",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $binary }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Data/Text",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8930ce1a-a4cc-4094-b08f-a23a13dec40c",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.headers['content-type'] }}",
                    "rightValue": "text/plain"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "appJSON",
              "conditions": {
                "options": {
                  "version": 1,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e3108952-daa2-425c-8c70-7d2ce0949e0c",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.headers['content-type'] }}",
                    "rightValue": "=application/json"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "fallbackOutput": "extra"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a2d92aeb-25eb-4d3c-82ad-16d2124099a8",
      "name": "Envoyer au canal d'erreur",
      "type": "n8n-nodes-base.slack",
      "position": [
        2380,
        880
      ],
      "webhookId": "d8e1201d-cbcc-4153-a164-51d7b3e17c84",
      "parameters": {
        "text": ":interrobang: Error in XML to JSON tool",
        "select": "channel",
        "blocksUi": "={\n\t\"blocks\": [\n{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \":interrobang: Error in CSV to JSON tool\"\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"type\": \"section\",\n\t\t\t\"text\": {\n\t\t\t\t\"type\": \"mrkdwn\",\n\t\t\t\t\"text\": \"*Time:*\\n{{ $now.format('dd/MM/yyyy HH:mm:ss') }}\\n*Execution ID:*\\n{{ $execution.id }}\\n\"\n\t\t\t},\n\t\t\t\"accessory\": {\n\t\t\t\t\"type\": \"button\",\n\t\t\t\t\"text\": {\n\t\t\t\t\t\"type\": \"plain_text\",\n\t\t\t\t\t\"text\": \"Go to Error\",\n\t\t\t\t\t\"emoji\": true\n\t\t\t\t},\n\t\t\t\t\"value\": \"error\",\n\t\t\t\t\"url\": \"[insert URL here]{{ $workflow.id }}/executions/{{ $execution.id }}\",\n\t\t\t\t\"action_id\": \"button-action\",\n\t\t\t\t\"style\": \"primary\"\n\t\t\t}\n\t\t}\n\t]\n}",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0832GBAEN4"
        },
        "messageType": "block",
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "typeVersion": 2.1
    },
    {
      "id": "b21c88d1-6f21-4ada-95ef-8ea91463e7ad",
      "name": "Convertir le texte brut en CSV",
      "type": "n8n-nodes-base.code",
      "onError": "continueRegularOutput",
      "position": [
        940,
        300
      ],
      "parameters": {
        "jsCode": "const csvData = $input.all()[0]?.json?.csv;\n\n// Use a regex to split on either ',' or ';'\nconst lines = csvData.split(\"\\n\");\nconst headers = lines[0].split(/,|;/);\n\nconst jsonData = lines.slice(1).map((line) => {\n  // Split on ',' or ';' for each line\n  const data = line.split(/,|;/);\n  let obj = {};\n  headers.forEach((header, i) => {\n    obj[header] = data[i];\n  });\n  return obj;\n});\n\nif (jsonData.length === 0) {\n  throw new Error(\"No data to process\");\n}\n\nreturn jsonData;\n"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "a9803789-0397-4f5f-9cd2-cb630f983efc",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2380,
        40
      ],
      "parameters": {
        "color": 7,
        "width": 700,
        "height": 600,
        "content": "## Sample of Raw CSV Data Send\nUse the HTTP request node below to see how to send the Raw CSV data into this workflow. Don't forget to include the \\n's "
      },
      "typeVersion": 1
    },
    {
      "id": "8fb97224-706b-41de-a7ab-cbe2191436e9",
      "name": "Vérifier si valeur",
      "type": "n8n-nodes-base.if",
      "position": [
        1180,
        300
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "d8d4cfda-f384-4154-8ad2-c3eabcb8c7ce",
              "operator": {
                "type": "string",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.error }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4484f424-429b-449f-85c2-dd6a135972a0",
      "name": "Envoyer CSV brut",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2480,
        200
      ],
      "parameters": {
        "url": "[insert URL here]",
        "body": "album, year, US_peak_chart_post\nThe White Stripes, 1999, -\nDe Stijl, 2000, -\nWhite Blood Cells, 2001, 61\nElephant, 2003, 6\nGet Behind Me Satan, 2005, 3\nIcky Thump, 2007, 2\nUnder Great White Northern Lights, 2010, 11\nLive in Mississippi, 2011, -\nLive at the Gold Dollar, 2012, -\nNine Miles from the White City, 2013, -\n",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "text/plain"
      },
      "typeVersion": 4.2
    },
    {
      "id": "70a46bce-32da-4868-a960-3ee1cefbed1f",
      "name": "POST",
      "type": "n8n-nodes-base.webhook",
      "position": [
        140,
        420
      ],
      "webhookId": "add125c9-1591-4e1c-b68c-8032b99b6010",
      "parameters": {
        "path": "tool/csv-to-json",
        "options": {
          "binaryPropertyName": "data"
        },
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 1.1
    },
    {
      "id": "116cfc2c-6e5f-4367-8c80-e1341e7d196a",
      "name": "Agrégat",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1580,
        220
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "jsondata"
      },
      "typeVersion": 1
    },
    {
      "id": "967dc555-2599-4fb0-b3e1-00164bae4120",
      "name": "Agrégat1",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1580,
        360
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "jsondata"
      },
      "typeVersion": 1
    },
    {
      "id": "51c77def-cdf7-41da-bfd1-e585f0553672",
      "name": "Réponse de succès2",
      "type": "n8n-nodes-base.respondToWebhook",
      "onError": "continueErrorOutput",
      "position": [
        1900,
        400
      ],
      "parameters": {
        "options": {
          "responseCode": 200
        },
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json.jsondata) }}"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "70a46bce-32da-4868-a960-3ee1cefbed1f": {
      "main": [
        [
          {
            "node": "cede2fad-f0ee-4082-a403-81f6d8eb188e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cede2fad-f0ee-4082-a403-81f6d8eb188e": {
      "main": [
        [
          {
            "node": "4eff962e-e636-4704-835a-672ccd705e16",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3484b148-4ba5-4b54-9401-44010ac31178",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "116cfc2c-6e5f-4367-8c80-e1341e7d196a": {
      "main": [
        [
          {
            "node": "a7d34aba-6ded-4cc8-8866-7d4aa6ae3255",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "967dc555-2599-4fb0-b3e1-00164bae4120": {
      "main": [
        [
          {
            "node": "51c77def-cdf7-41da-bfd1-e585f0553672",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3484b148-4ba5-4b54-9401-44010ac31178": {
      "main": [
        [
          {
            "node": "b21c88d1-6f21-4ada-95ef-8ea91463e7ad",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8fb97224-706b-41de-a7ab-cbe2191436e9": {
      "main": [
        [
          {
            "node": "967dc555-2599-4fb0-b3e1-00164bae4120",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ccc66f1e-e000-4048-a492-b80fbf8c8fce": {
      "main": [
        [
          {
            "node": "a2d92aeb-25eb-4d3c-82ad-16d2124099a8",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "a2d92aeb-25eb-4d3c-82ad-16d2124099a8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a7d34aba-6ded-4cc8-8866-7d4aa6ae3255": {
      "main": [
        [],
        [
          {
            "node": "a2d92aeb-25eb-4d3c-82ad-16d2124099a8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4eff962e-e636-4704-835a-672ccd705e16": {
      "main": [
        [
          {
            "node": "116cfc2c-6e5f-4367-8c80-e1341e7d196a",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "ccc66f1e-e000-4048-a492-b80fbf8c8fce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "51c77def-cdf7-41da-bfd1-e585f0553672": {
      "main": [
        [],
        [
          {
            "node": "a2d92aeb-25eb-4d3c-82ad-16d2124099a8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b21c88d1-6f21-4ada-95ef-8ea91463e7ad": {
      "main": [
        [
          {
            "node": "8fb97224-706b-41de-a7ab-cbe2191436e9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Ingénierie

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds18
Catégorie1
Types de nœuds11
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
n8n Team

n8n Team

@n8n-team

Meet the official n8n team. We specialize in building workflows that transform intricate tasks into seamless operations.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34