Automatisation des Formulaires avec Google Sheets

Ce workflow n8n permet d'automatiser la mise à jour dynamique des champs déroulants dans un formulaire en ligne en utilisant les données de Google Sheets. Il simplifie le processus de gestion des formulaires en assurant que les options proposées aux utilisateurs sont toujours à jour, réduisant ainsi les erreurs et améliorant l'efficacité opérationnelle. Idéal pour les équipes qui souhaitent intégrer des données en temps réel dans leurs processus de capture d'informations.

174,455 vues
36,182 copies
Automatisation

Documentation Complète

📋 Automatisation des Formulaires avec Google Sheets

💡 Description

Ce workflow n8n permet d'automatiser la mise à jour dynamique des champs déroulants dans un formulaire en ligne en utilisant les données de Google Sheets. Il simplifie le processus de gestion des formulaires en assurant que les options proposées aux utilisateurs sont toujours à jour, réduisant ainsi les erreurs et améliorant l'efficacité opérationnelle. Idéal pour les équipes qui souhaitent intégrer des données en temps réel dans leurs processus de capture d'informations.

📈 Impact & ROI: Réduit le temps passé sur la gestion des formulaires et minimise les erreurs humaines, augmentant ainsi la productivité globale et l'exactitude des données collectées.

🚀 Fonctionnalités Clés

  • ✅ Mise à jour automatique des champs déroulants grâce aux données Google Sheets
  • ✅ Intégration fluide avec n8n pour une automatisation sans effort
  • ✅ Gain de temps significatif en évitant les mises à jour manuelles des formulaires
  • ✅ Adaptabilité élevée permettant l'intégration avec d'autres sources de données

📊 Architecture Technique

16
Nodes
7
Connexions
2
Services

🔌 Services Intégrés

Google Sheetsn8n

🔧 Composition du Workflow

NodeTypeDescription
n8n | get wfn8nTraitement des données
n8n | updaten8nTraitement des données
On form submissionformTriggerTraitement des données
Google Sheets TriggergoogleSheetsTriggerTraitement des données
Execute WorkflowexecuteWorkflowTraitement des données
Sticky NotestickyNoteTraitement des données
Sticky Note1stickyNoteTraitement des données
Sticky Note2stickyNoteTraitement des données
Sticky Note3stickyNoteTraitement des données
Sticky Note4stickyNoteTraitement des données
Sticky Note5stickyNoteTraitement des données
Sticky Note6stickyNoteTraitement des données
Write JSONcodeTraitement des données
Replace valuessetTraitement des données
Get all valuesgoogleSheetsTraitement des données
Format to 'values'setTraitement des données

📖 Guide d'Implémentation

  1. Import du workflow: Téléchargez le fichier JSON et importez-le dans votre instance n8n
  2. Configuration des credentials: Configurez les accès pour chaque service utilisé
  3. Personnalisation: Adaptez les paramètres selon vos besoins spécifiques
  4. Test: Exécutez le workflow en mode test pour vérifier le bon fonctionnement
  5. Activation: Activez le workflow pour une exécution automatique

🏷️ Tags

formulaire dynamiqueGoogle Sheetsautomatisation

Structure JSON

Voir le code JSON complet
{
    "id": "RKbQHfblpcvMGZ4w",
    "meta": {
        "instanceId": "d47f3738b860eed937a1b18d7345fa2c65cf4b4957554e29477cb064a7039870"
    },
    "name": "Form with Dynamic Dropdown Field",
    "tags": [],
    "nodes": [
        {
            "id": "aa627a35-9bea-4c07-b7e7-26f048564443",
            "name": "n8n | get wf",
            "type": "n8n-nodes-base.n8n",
            "position": [
                540,
                -180
            ],
            "parameters": {
                "operation": "get",
                "workflowId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $workflow.id }}"
                },
                "requestOptions": []
            },
            "credentials": {
                "n8nApi": {
                    "id": "us0k8UE7R2MZPFBK",
                    "name": "n8n account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "902a8e45-f4b4-469c-96a6-80002de5f6dc",
            "name": "n8n | update",
            "type": "n8n-nodes-base.n8n",
            "position": [
                1060,
                -180
            ],
            "parameters": {
                "operation": "update",
                "workflowId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $json.id }}"
                },
                "requestOptions": [],
                "workflowObject": "={{ JSON.stringify($json) }}"
            },
            "credentials": {
                "n8nApi": {
                    "id": "us0k8UE7R2MZPFBK",
                    "name": "n8n account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "3e9e5c16-0080-4cba-8a8a-8f24f7266fcb",
            "name": "On form submission",
            "type": "n8n-nodes-base.formTrigger",
            "position": [
                40,
                -620
            ],
            "webhookId": "3e975d29-df26-49fb-8dcf-abe8fe8bc4e6",
            "parameters": {
                "options": [],
                "formTitle": "Example Title",
                "formFields": {
                    "values": [
                        {
                            "fieldLabel": "Example text field"
                        },
                        {
                            "fieldType": "dropdown",
                            "fieldLabel": "Example dropdown",
                            "fieldOptions": {
                                "values": [
                                    {
                                        "option": "test publieke ruimtes"
                                    },
                                    {
                                        "option": "Demonstraties"
                                    },
                                    {
                                        "option": "Demonstraties"
                                    },
                                    {
                                        "option": "Juridisch medewerker IE-recht  Streetlife"
                                    },
                                    {
                                        "option": "Bamboe"
                                    },
                                    {
                                        "option": "Klaar?"
                                    },
                                    {
                                        "option": "Dannu?"
                                    }
                                ]
                            }
                        }
                    ]
                }
            },
            "typeVersion": 2.2
        },
        {
            "id": "0b874994-c123-44f8-b0f5-0b365b57d945",
            "name": "Google Sheets Trigger",
            "type": "n8n-nodes-base.googleSheetsTrigger",
            "position": [
                -460,
                -180
            ],
            "parameters": {
                "options": [],
                "pollTimes": {
                    "item": [
                        {
                            "mode": "everyMinute"
                        }
                    ]
                },
                "sheetName": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gid=0",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA\/edit#gid=0",
                    "cachedResultName": "Blad1"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA\/edit?usp=drivesdk",
                    "cachedResultName": "obsidian-n8n"
                },
                "includeInOutput": "both"
            },
            "credentials": {
                "googleSheetsTriggerOAuth2Api": {
                    "id": "FV58wiwivBMosfix",
                    "name": "Google Sheets Trigger account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "4c9bfed8-a758-40b9-9c74-53bedc1d1aa3",
            "name": "Execute Workflow",
            "type": "n8n-nodes-base.executeWorkflow",
            "position": [
                240,
                -620
            ],
            "parameters": {
                "options": [],
                "workflowId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $workflow.id }}"
                }
            },
            "typeVersion": 1.1
        },
        {
            "id": "6e9d4a5a-9583-4b61-aea1-dd4892230e7c",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -520,
                -660
            ],
            "parameters": {
                "width": 960,
                "height": 240,
                "content": "## Form setup\n\n- Customize your form fields. \n- The dropdown field will auto-update with values from your data source. \n- Other form fields can be added as needed (limited to one dropdown field).\n- Connect to your workflow that processes the submitted form data.\n\n### Form requires production mode for testing"
            },
            "typeVersion": 1
        },
        {
            "id": "41c364f4-5b1f-42fd-841b-a6f99b585804",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -520,
                -400
            ],
            "parameters": {
                "width": 440,
                "height": 400,
                "content": "## Data source setup\n\n- Connect to your Google Sheet containing dropdown values\n- Node can be replaced with any other data source (API, database)\n- Set timing trigger"
            },
            "typeVersion": 1
        },
        {
            "id": "cda8f803-1773-4df7-90b9-4d8cd0469cd8",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -60,
                -400
            ],
            "parameters": {
                "width": 260,
                "height": 400,
                "content": "## Data formatting\n\n- Extracts needed data from source\n- Renames field to 'value' (do not change this name)"
            },
            "typeVersion": 1
        },
        {
            "id": "e9594ad1-3bb8-4da6-95b3-cb610a17c1bb",
            "name": "Sticky Note3",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                220,
                -400
            ],
            "parameters": {
                "height": 400,
                "content": "## Nested properties\n\n- Transforms the data to the desired format"
            },
            "typeVersion": 1
        },
        {
            "id": "806a2502-5c6c-435c-a20e-8ca0eee92822",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                480,
                -400
            ],
            "parameters": {
                "height": 400,
                "content": "## Get Workflow \n\n- Gets the current workflow data"
            },
            "typeVersion": 1
        },
        {
            "id": "385c3e64-9893-4e3f-b789-abbf079fa8b1",
            "name": "Sticky Note5",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                740,
                -400
            ],
            "parameters": {
                "height": 400,
                "content": "## Add Dropdown Values \n- Replaces the nested parameters of the Dropdown Form Field with the nested properties sourced from the data."
            },
            "typeVersion": 1
        },
        {
            "id": "f43324fc-6790-445b-a72b-ae4afb051101",
            "name": "Sticky Note6",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1000,
                -400
            ],
            "parameters": {
                "height": 400,
                "content": "## Update Form \n\n- Replaces the current workflow’s JSON with the updated JSON containing the new Dropdown values."
            },
            "typeVersion": 1
        },
        {
            "id": "317694bd-590f-4eb4-a53f-f4d5d2d1ab16",
            "name": "Write JSON",
            "type": "n8n-nodes-base.code",
            "position": [
                280,
                -180
            ],
            "parameters": {
                "jsCode": "const inputArray = items.map(item => item.json);\n\nconst output = [\n  {\n    nodes: [\n      {\n        parameters: {\n          formFields: {\n            values: [\n              {\n                fieldOptions: {\n                  values: inputArray.map(entry => ({ option: entry.value }))\n                }\n              }\n            ]\n          }\n        }\n      }\n    ]\n  }\n];\n\n\/\/ Return the transformed output\nreturn output.map(item => ({ json: item }));"
            },
            "typeVersion": 2
        },
        {
            "id": "08b3c0b3-3df3-40d9-80ce-bd7c763fdbdb",
            "name": "Replace values",
            "type": "n8n-nodes-base.set",
            "position": [
                820,
                -180
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "38ef2b43-b903-4e96-b098-9da2d8c1c153",
                            "name": "={{ \n   (() => {\n      const nodeIndex = $json.nodes.findIndex(\n         node => node.parameters?.formFields?.values.some(\n            value => value.fieldType === 'dropdown' && value.fieldOptions?.values\n         )\n      );\n\n      if (nodeIndex === -1) return 'No matching node found';\n\n      const valueIndex = $json.nodes[nodeIndex].parameters.formFields.values.findIndex(\n         value => value.fieldType === 'dropdown' && value.fieldOptions?.values\n      );\n\n      if (valueIndex === -1) return `nodes[${nodeIndex}].parameters.formFields.values - No matching dropdown value found`;\n\n      return `nodes[${nodeIndex}].parameters.formFields.values[${valueIndex}].fieldOptions.values`;\n   })()\n}}",
                            "type": "array",
                            "value": "={{ $('Write JSON').item.json.nodes[0].parameters.formFields.values[0].fieldOptions.values }}"
                        }
                    ]
                },
                "includeOtherFields": true
            },
            "typeVersion": 3.4
        },
        {
            "id": "07635565-f8ea-4fac-b93c-069fbe065ce8",
            "name": "Get all values",
            "type": "n8n-nodes-base.googleSheets",
            "position": [
                -240,
                -180
            ],
            "parameters": {
                "options": [],
                "sheetName": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gid=0",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA\/edit#gid=0",
                    "cachedResultName": "Blad1"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1F73a7uuzLAq916w2JFndumv0JhnCAvOTN-Cn_OOP3uA\/edit?usp=drivesdk",
                    "cachedResultName": "obsidian-n8n"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "3Pu0wlfxgNYzVqY6",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.5
        },
        {
            "id": "9ce7bf73-211a-4f5b-b39d-81a2d513a3ef",
            "name": "Format to 'values'",
            "type": "n8n-nodes-base.set",
            "position": [
                20,
                -180
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "e18aa12e-f277-4257-ba27-9262cc7b866a",
                            "name": "value",
                            "type": "string",
                            "value": "={{ $json.title }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "d69a3011-97a6-44e9-9b7e-c8e9a248964a",
    "connections": {
        "Write JSON": {
            "main": [
                [
                    {
                        "node": "n8n | get wf",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "n8n | get wf": {
            "main": [
                [
                    {
                        "node": "Replace values",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get all values": {
            "main": [
                [
                    {
                        "node": "Format to 'values'",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Replace values": {
            "main": [
                [
                    {
                        "node": "n8n | update",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Format to 'values'": {
            "main": [
                [
                    {
                        "node": "Write JSON",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "On form submission": {
            "main": [
                [
                    {
                        "node": "Execute Workflow",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Google Sheets Trigger": {
            "main": [
                [
                    {
                        "node": "Get all values",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Automatisez le Résumé de Vos Emails avec A.I. et Messagerie

Ce workflow n8n vous permet d'automatiser la gestion de vos emails en utilisant l'intelligence artificielle pour résume...

Automatisation de gestion des réunions Zoom et communication

Ce workflow est conçu pour automatiser le processus de planification et de gestion des réunions Zoom tout en assurant ...

Automatisez vos Tweets d'images humoristiques à 17h

Ce workflow n8n est conçu pour les professionnels des réseaux sociaux cherchant à automatiser leur contenu humoristiq...