Workflow: Code Form Automation

Workflow Details

Download Workflow
{
    "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.20000000000000017763568394002504646778106689453125
        },
        {
            "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.100000000000000088817841970012523233890533447265625
        },
        {
            "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\u2019s 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.399999999999999911182158029987476766109466552734375
        },
        {
            "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.399999999999999911182158029987476766109466552734375
        }
    ],
    "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
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Blog Automation TEMPLATE
View
Manual GoogleDrive Automation Triggered
View
Manual Movebinarydata Process Triggered
View
Convert Parquet, Avro, ORC & Feather via ParquetReader to JSON
View
Effortless Email Management with AI
View
Splitout Code Send Triggered
View
Web Server Monitor.
View
Stickynote Send Triggered
View
Microsoft Outlook AI Email Assistant
View
Manual Markdown Create Webhook
View