Workflow n8n

Automatisation Google Sheets avec n8n : gestion des commandes

Ce workflow n8n a pour objectif d'automatiser la gestion des commandes en intégrant des données dans Google Sheets. Dans un contexte où la gestion manuelle des commandes peut entraîner des erreurs et des pertes de temps, ce workflow s'adresse aux entreprises qui souhaitent optimiser leur processus de suivi des commandes. Il est particulièrement utile pour les équipes de vente et de logistique qui traitent un grand volume de commandes et qui ont besoin d'une solution efficace pour centraliser ces informations.

  • Étape 1 : le déclencheur est un événement manuel, permettant de tester le workflow à la demande.
  • Étape 2 : le noeud 'Get Orders' effectue une requête HTTP pour récupérer les données des commandes.
  • Étape 3 : les informations de la page sont extraites à l'aide du noeud 'Extract page_info', qui permet de structurer les données obtenues.
  • Étape 4 : les commandes sont ensuite divisées en éléments individuels grâce au noeud 'List Orders'.
  • Étape 5 : les données sont traitées et fusionnées avec le noeud 'Merge Loop items'.
  • Étape 6 : les informations sont ensuite envoyées vers Google Sheets via le noeud 'Google Sheets', où elles sont organisées dans un document spécifique. Ce workflow apporte une valeur ajoutée significative en réduisant le temps de traitement des commandes et en minimisant les erreurs humaines, permettant ainsi aux équipes de se concentrer sur des tâches à plus forte valeur ajoutée.
Tags clés :automatisationGoogle Sheetsgestion des commandesworkflown8n
Catégorie: Manual · Tags: automatisation, Google Sheets, gestion des commandes, workflow, n8n0

Workflow n8n Google Sheets, gestion des commandes : vue d'ensemble

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

Workflow n8n Google Sheets, gestion des commandes : détail des nœuds

  • When clicking ‘Test workflow’

    Déclenche le workflow manuellement lorsque l'utilisateur clique sur 'Test workflow'.

  • Get Orders

    Effectue une requête HTTP pour récupérer les commandes à partir d'une URL spécifiée.

  • Extract page_info

    Extrait des informations de page en exécutant un code JavaScript personnalisé.

  • Merge Loop items

    Fusionne les éléments d'une boucle en utilisant un code JavaScript.

  • List Orders

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

  • Google Sheets

    Interagit avec Google Sheets pour effectuer des opérations sur un document spécifique.

  • Sticky Note

    Crée une note autocollante avec un contenu, une largeur et une hauteur spécifiées.

  • Sticky Note1

    Crée une seconde note autocollante avec un contenu, une largeur et une hauteur spécifiées.

  • Schedule Trigger

    Déclenche le workflow selon un calendrier défini par une règle.

  • Assign page_info parameter

    Assigne une valeur à un paramètre 'page_info' en utilisant des options et des affectations spécifiées.

  • Check page_info existence

    Vérifie l'existence du paramètre 'page_info' en fonction de conditions définies.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "e634e668fe1fc93a75c4f2a7fc0dad807ca318b79654157eadb9578496acbc76",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "33114dba-d3e2-469c-bb01-e50d4e84be53",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        120,
        60
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "68a92424-8345-40d1-bdb2-ad4b68c35406",
      "name": "Get Orders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        500,
        0
      ],
      "parameters": {
        "url": "https://{store}.myshopify.com/admin/api/2025-01/orders.json",
        "options": {
          "response": {
            "response": {
              "fullResponse": true
            }
          }
        },
        "sendQuery": true,
        "authentication": "predefinedCredentialType",
        "queryParameters": {
          "parameters": [
            {
              "name": "limit",
              "value": "250"
            },
            {
              "name": "fields",
              "value": "id,note,email,processed_at,customer"
            },
            {
              "name": "={{ $json.page_info ? \"page_info\" : \"status\" }}",
              "value": "={{ $json.page_info ? $json.page_info : 'any' }}"
            }
          ]
        },
        "nodeCredentialType": "shopifyAccessTokenApi"
      },
      "credentials": {
        "shopifyAccessTokenApi": {
          "id": "vtyKGPLLdjc7MLea",
          "name": "Shopify Access Token account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e0e67ff4-cba3-420e-ad06-4201d8517470",
      "name": "Extract page_info ",
      "type": "n8n-nodes-base.code",
      "position": [
        900,
        120
      ],
      "parameters": {
        "jsCode": "function parseNextParams(headerValue) {\n    // Match the URL inside <>\n    const urlMatch = headerValue.match(/<([^>]+)>;\\s*rel=\"next\"/);\n    if (!urlMatch) return null;\n\n    const url = urlMatch[1]; // Extracted URL\n    const paramsString = url.split(\"?\")[1]; // Get query string\n\n    if (!paramsString) return {}; // No params found\n\n    // Convert query string to object\n    return paramsString.split(\"&\").reduce((acc, param) => {\n        const [key, value] = param.split(\"=\");\n        acc[decodeURIComponent(key)] = decodeURIComponent(value);\n        return acc;\n    }, {});\n}\n\n/* Example usage\n`<https://59b774-3.myshopify.com/admin/api/2025-01/orders.json?limit=250&fields=id%2Cnote%2Cemail%2Cprocessed_at%2Ccustomer&page_info=eyJzdGF0dXMiOiJhbnkiLCJsYXN0X2lkIjo2MzQ5MjI3MDAwMDk0LCJsYXN0X3ZhbHVlIjoiMjAyNC0xMi0zMSAwOToxMzowMi42MTcxNjYiLCJkaXJlY3Rpb24iOiJuZXh0In0>; rel=\"next\"`\n*/\nconst headerValue = $input.first().json.headers.link;\nconst params = parseNextParams(headerValue);\nreturn params;"
      },
      "typeVersion": 2
    },
    {
      "id": "fd06d8fa-3c6d-4877-a2e8-cb71b0d0ef32",
      "name": "Merge Loop items",
      "type": "n8n-nodes-base.code",
      "position": [
        1120,
        -100
      ],
      "parameters": {
        "jsCode": "let results = [],\n  i = 0;\n\ndo {\n  try {\n    results = results.concat($(\"Get Orders\").all(0, i));\n  } catch (error) {\n    return results;\n  }\n  i++;\n} while (true);"
      },
      "typeVersion": 2
    },
    {
      "id": "cd9840ad-4ec2-4979-b0cc-c7dc42917452",
      "name": "List Orders",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1380,
        -100
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "body.orders"
      },
      "typeVersion": 1
    },
    {
      "id": "9d491fda-ab2e-4247-85bd-969a07476471",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1620,
        -100
      ],
      "parameters": {
        "columns": {
          "value": {
            "id": "={{ $json.id }}",
            "note": "={{ $json.note }}",
            "email": "={{ $json.email }}",
            "processed_at": "={{ $json.processed_at }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "processed_at",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "processed_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "note",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "note",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2030201341,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM/edit#gid=2030201341",
          "cachedResultName": "shopify_orders"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1yf_RYZGFHpMyOvD3RKGSvIFY2vumvI4474Qm_1t4-jM/edit?usp=drivesdk",
          "cachedResultName": "Squarespace automation"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JgI9maibw5DnBXRP",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "d1974350-5fcb-448a-b895-17b296de0019",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -160
      ],
      "parameters": {
        "width": 232,
        "height": 346,
        "content": "## Edit this node 👇\n\nGet your store URL and replace in the GET url: https://{your-store}.myshopify.com/admin/api/2025-01/orders.json\n"
      },
      "typeVersion": 1
    },
    {
      "id": "bbc911a5-0020-47d9-8b2f-2edd7ac83325",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1580,
        -260
      ],
      "parameters": {
        "width": 252,
        "height": 346,
        "content": "## Clone this spreadsheet\n\nhttps://docs.google.com/spreadsheets/d/1KRl6aCCU2SE3Z6vB2EbTnSwSUAre0BLf9Wu6fyPlrIE/edit?usp=sharing"
      },
      "typeVersion": 1
    },
    {
      "id": "fdec0965-3a0c-4886-90b4-f2ef4f0cebdd",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        120,
        -120
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "87cdb9e8-a031-4a40-a5e6-65a0cfc40180",
      "name": "Assign page_info parameter",
      "type": "n8n-nodes-base.set",
      "position": [
        1120,
        120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "57e59bb7-ac20-4a1b-b54a-3468fc0519d3",
              "name": "page_info",
              "type": "string",
              "value": "={{ $json.page_info }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8f15e8a1-19de-401f-8ef2-358a42e806bb",
      "name": "Check page_info existence",
      "type": "n8n-nodes-base.if",
      "position": [
        720,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "30d965c3-cbba-430e-81c2-ef8b543665e7",
              "operator": {
                "type": "string",
                "operation": "notContains"
              },
              "leftValue": "={{ $json.headers.link }}",
              "rightValue": "rel=\"next\""
            }
          ]
        }
      },
      "typeVersion": 2.2
    }
  ],
  "pinData": {},
  "connections": {
    "Get Orders": {
      "main": [
        [
          {
            "node": "Check page_info existence",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "List Orders": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Loop items": {
      "main": [
        [
          {
            "node": "List Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract page_info ": {
      "main": [
        [
          {
            "node": "Assign page_info parameter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check page_info existence": {
      "main": [
        [
          {
            "node": "Merge Loop items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Extract page_info ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Assign page_info parameter": {
      "main": [
        [
          {
            "node": "Get Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get Orders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Google Sheets, gestion des commandes : pour qui est ce workflow ?

Ce workflow s'adresse aux PME et aux équipes de vente et de logistique qui cherchent à automatiser la gestion de leurs commandes. Il est idéal pour les utilisateurs ayant un niveau technique intermédiaire et souhaitant optimiser leurs processus d'affaires.

Workflow n8n Google Sheets, gestion des commandes : problème résolu

Ce workflow résout le problème de la gestion manuelle des commandes, qui peut être source d'erreurs et de pertes de temps. En automatisant le processus d'intégration des données dans Google Sheets, les utilisateurs peuvent réduire le risque d'erreurs humaines et gagner un temps précieux. Après la mise en place de ce workflow, les équipes peuvent se concentrer sur des tâches plus stratégiques, tout en ayant accès à des données de commandes précises et à jour.

Workflow n8n Google Sheets, gestion des commandes : étapes du workflow

Étape 1 : le workflow est déclenché manuellement pour tester son fonctionnement.

  • Étape 1 : une requête HTTP est effectuée pour récupérer les commandes via le noeud 'Get Orders'.
  • Étape 2 : les informations de la page sont extraites avec le noeud 'Extract page_info'.
  • Étape 3 : les commandes sont divisées en éléments individuels grâce au noeud 'List Orders'.
  • Étape 4 : les données sont fusionnées avec le noeud 'Merge Loop items'.
  • Étape 5 : les informations sont envoyées vers Google Sheets pour être organisées dans un document spécifique.

Workflow n8n Google Sheets, gestion des commandes : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL dans le noeud 'Get Orders' pour qu'elle pointe vers votre API de gestion des commandes. Dans le noeud 'Google Sheets', ajustez le nom de la feuille et l'ID du document pour correspondre à votre configuration. Vous pouvez également ajouter des conditions dans le noeud 'Check page_info existence' pour gérer des cas spécifiques selon vos besoins. Enfin, n'hésitez pas à adapter les paramètres des noeuds de traitement pour affiner la manière dont les données sont extraites et fusionnées.