Optimisez la Gestion des Dépenses avec n8n et Google Sheets

Ce workflow automatise le suivi des dépenses en intégrant la reconnaissance de texte via OpenAI et le stockage dans Google Sheets. En recevant un message de chat, l'IA interprète les données de dépense et les convertit en JSON structuré. Ces informations sont ensuite sauvegardées automatiquement dans une feuille Google Sheets dédiée. Ce processus réduit considérablement le temps et les erreurs associés à la gestion manuelle des dépenses, assurant une organisation financière efficace pour votre entreprise.

91,762 vues
36,216 copies
Finance

Documentation Complète

📋 Optimisez la Gestion des Dépenses avec n8n et Google Sheets

💡 Description

Ce workflow automatise le suivi des dépenses en intégrant la reconnaissance de texte via OpenAI et le stockage dans Google Sheets. En recevant un message de chat, l'IA interprète les données de dépense et les convertit en JSON structuré. Ces informations sont ensuite sauvegardées automatiquement dans une feuille Google Sheets dédiée. Ce processus réduit considérablement le temps et les erreurs associés à la gestion manuelle des dépenses, assurant une organisation financière efficace pour votre entreprise.

📈 Impact & ROI: Amélioration de la précision et de l'efficacité du suivi financier, réduction des erreurs manuelles et gain de temps significatif.

🚀 Fonctionnalités Clés

  • ✅ Automatisation du suivi des dépenses - Réduction des tâches manuelles
  • ✅ Intégration fluide avec Google Sheets - Centralisation des données financières
  • ✅ Utilisation de l'intelligence artificielle - Amélioration de la précision des données
  • ✅ Réponse instantanée aux messages de chat - Efficacité accrue

📊 Architecture Technique

10
Nodes
7
Connexions
3
Services

🔌 Services Intégrés

n8nGoogle SheetsOpenAI

🔧 Composition du Workflow

NodeTypeDescription
AI Agent@n8n/n8n-nodes-langchain.agentTraitement des données
When chat message received@n8n/n8n-nodes-langchain.chatTriggerTraitement des données
Workflow Input TriggerexecuteWorkflowTriggerTraitement des données
OpenAI Chat Model@n8n/n8n-nodes-langchain.lmChatOpenAiTraitement des données
Window Buffer Memory@n8n/n8n-nodes-langchain.memoryBufferWindowTraitement des données
Sticky NotestickyNoteTraitement des données
OpenAI Chat Model1@n8n/n8n-nodes-langchain.lmChatOpenAiTraitement des données
Expense text to JSON parser@n8n/n8n-nodes-langchain.informationExtractorTraitement des données
Save expense into Google SheetsgoogleSheetsTraitement des données
Parse msg and save to Sheets@n8n/n8n-nodes-langchain.toolWorkflowTraitement 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

dépensesautomatisationGoogle SheetsOpenAIgestion financière

Structure JSON

Voir le code JSON complet
{
    "id": "aLTkMiEDYXbMK4fT",
    "meta": {
        "instanceId": "5b860a91d7844b5237bb51cc58691ca8c3dc5b576f42d4d6bbedfb8d43d58ece",
        "templateCredsSetupCompleted": true
    },
    "name": "AI agent: expense tracker in Google Sheets and n8n chat",
    "tags": [],
    "nodes": [
        {
            "id": "9260b53e-6848-4f34-9643-311c58c807f6",
            "name": "AI Agent",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                360,
                40
            ],
            "parameters": {
                "options": {
                    "maxIterations": 3,
                    "systemMessage": "You are a helpful accountant. Use save to db tool to save expense message to DB. respond with \"Your expense saved, here is the output of save sub-workflow:[data]\""
                }
            },
            "typeVersion": 1.7
        },
        {
            "id": "0d7a686c-42c2-4223-9f78-b454788fb6da",
            "name": "When chat message received",
            "type": "@n8n\/n8n-nodes-langchain.chatTrigger",
            "position": [
                0,
                40
            ],
            "webhookId": "6a34ec84-459d-4cc4-83b6-06ae4c99dc8f",
            "parameters": {
                "options": []
            },
            "typeVersion": 1.1
        },
        {
            "id": "f1f27aaf-cf13-40d9-b8f9-800a862f8bf0",
            "name": "Workflow Input Trigger",
            "type": "n8n-nodes-base.executeWorkflowTrigger",
            "position": [
                180,
                600
            ],
            "parameters": {
                "workflowInputs": {
                    "values": [
                        {
                            "name": "input1"
                        }
                    ]
                }
            },
            "typeVersion": 1.1
        },
        {
            "id": "a1530601-1a91-45be-adef-2e0608bfe773",
            "name": "OpenAI Chat Model",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
            "position": [
                340,
                300
            ],
            "parameters": {
                "options": []
            },
            "credentials": {
                "openAiApi": {
                    "id": "vHFEeel4RHFsjcMI",
                    "name": "OpenAi account"
                }
            },
            "typeVersion": 1.1
        },
        {
            "id": "c6f9782e-6b9b-421e-8b10-9ef04cbbee8c",
            "name": "Window Buffer Memory",
            "type": "@n8n\/n8n-nodes-langchain.memoryBufferWindow",
            "position": [
                500,
                300
            ],
            "parameters": [],
            "typeVersion": 1.3
        },
        {
            "id": "bbe1116a-1c66-496e-a9bf-747457e47bb0",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -760,
                200
            ],
            "parameters": {
                "width": 720,
                "height": 500,
                "content": "## Save your expenses via chat message. \n\nLLM will parse your message to structured JSON and save as a new row into Google Sheet.\n\n## Installation\n### 1. Set up Google Sheets:\nClone this Sheet:\nhttps:\/\/docs.google.com\/spreadsheets\/d\/1D0r3tun7LF7Ypb21CmbTKEtn76WE-kaHvBCM5NdgiPU\/edit?gid=0#gid=0\n\n(File -> Make a copy)\n\nChoose this sheet into \"Save expense into Google Sheets\" node.\n\n\n### 2. Fix sub-workflow dropdown: \nopen \"Parse msg and save to Sheets\" node (which is an n8n sub-workflow executor tool) and choose the SAME workflow in the dropdown. it will allow n8n to call \"Workflow Input Trigger\" properly when needed.\n\n\n### 3. Activate the workflow to make chat work properly.\nSent message to chat, something like \"car wash; 59.3 usd; 25 jan 2024\"\n\nyou should get a response:\nYour expense saved, here is the output of save sub-workflow:{\"cost\":59.3,\"descr\":\"car wash\",\"date\":\"2024-01-25\",\"msg\":\"car wash; 59.3 usd; 25 jan 2024\"}\n\nand new row in Google sheets should be inserted!"
            },
            "typeVersion": 1
        },
        {
            "id": "61a489f7-5b95-438a-81f0-1e3e8c445622",
            "name": "OpenAI Chat Model1",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOpenAi",
            "position": [
                400,
                900
            ],
            "parameters": {
                "options": []
            },
            "credentials": {
                "openAiApi": {
                    "id": "vHFEeel4RHFsjcMI",
                    "name": "OpenAi account"
                }
            },
            "typeVersion": 1.1
        },
        {
            "id": "57908f61-ed9b-41a9-aba6-031bfc65bd31",
            "name": "Expense text to JSON parser",
            "type": "@n8n\/n8n-nodes-langchain.informationExtractor",
            "position": [
                400,
                600
            ],
            "parameters": {
                "text": "=convert expense to JSON: \n\n{{ $json.input1 }}",
                "options": [],
                "attributes": {
                    "attributes": [
                        {
                            "name": "cost",
                            "type": "number",
                            "required": true,
                            "description": "expense cost"
                        },
                        {
                            "name": "descr",
                            "required": true,
                            "description": "description of expense"
                        },
                        {
                            "name": "date",
                            "type": "date",
                            "description": "date in UTC format. "
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "id": "23f123eb-c4d9-4e6c-a521-311498d40d61",
            "name": "Save expense into Google Sheets",
            "type": "n8n-nodes-base.googleSheets",
            "position": [
                760,
                600
            ],
            "parameters": {
                "columns": {
                    "value": {
                        "msg": "={{ $('Workflow Input Trigger').item.json.input1 }}",
                        "cost": "={{ $json.output.cost }}",
                        "date": "={{ $json.output.date ? $json.output.date : $now }}",
                        "descr": "={{ $json.output.descr }}"
                    },
                    "schema": [
                        {
                            "id": "date",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "date",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "cost",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "cost",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "descr",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "descr",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "msg",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "msg",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "defineBelow",
                    "matchingColumns": [],
                    "attemptToConvertTypes": false,
                    "convertFieldsToString": false
                },
                "options": {
                    "useAppend": true
                },
                "operation": "append",
                "sheetName": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gid=0",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1_BMLmh5MtmQarWuZIJANQZSkjaQ2Rc3YYLhwyz1Sec0\/edit#gid=0",
                    "cachedResultName": "Sheet1"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1_BMLmh5MtmQarWuZIJANQZSkjaQ2Rc3YYLhwyz1Sec0",
                    "cachedResultUrl": "https:\/\/docs.google.com\/spreadsheets\/d\/1_BMLmh5MtmQarWuZIJANQZSkjaQ2Rc3YYLhwyz1Sec0\/edit?usp=drivesdk",
                    "cachedResultName": "ai-expense"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "vowsrhMIxy2PRDbH",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.5
        },
        {
            "id": "83770030-eab1-499a-b743-fe639e34fbb2",
            "name": "Parse msg and save to Sheets",
            "type": "@n8n\/n8n-nodes-langchain.toolWorkflow",
            "notes": "Make sure that this SAME workflow is chosen in the Workflow dropdown!",
            "position": [
                660,
                300
            ],
            "parameters": {
                "name": "save_expense_in_db",
                "workflowId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "aLTkMiEDYXbMK4fT",
                    "cachedResultName": "sub-workflow1"
                },
                "description": "Call this tool to save expense in db.",
                "workflowInputs": {
                    "value": {
                        "input1": "={{ $json.chatInput }}"
                    },
                    "schema": [
                        {
                            "id": "input1",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "input1",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "defineBelow",
                    "matchingColumns": [],
                    "attemptToConvertTypes": false,
                    "convertFieldsToString": false
                }
            },
            "notesInFlow": true,
            "typeVersion": 2
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "9ab1bbef-ffe8-462c-a201-920c6d250ade",
    "connections": {
        "OpenAI Chat Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "OpenAI Chat Model1": {
            "ai_languageModel": [
                [
                    {
                        "node": "Expense text to JSON parser",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Window Buffer Memory": {
            "ai_memory": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_memory",
                        "index": 0
                    }
                ]
            ]
        },
        "Workflow Input Trigger": {
            "main": [
                [
                    {
                        "node": "Expense text to JSON parser",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "When chat message received": {
            "main": [
                [
                    {
                        "node": "AI Agent",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Expense text to JSON parser": {
            "main": [
                [
                    {
                        "node": "Save expense into Google Sheets",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Parse msg and save to Sheets": {
            "ai_tool": [
                [
                    {
                        "node": "AI Agent",
                        "type": "ai_tool",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Automatisation de la Surveillance des Coûts de Projet avec Alertes Email

Ce workflow automatisé vérifie régulièrement les projets actifs dans votre base de données MySQL pour identifier ce...

Automatisation Avancée de la Gestion des Factures avec n8n

Ce workflow révolutionne la gestion des factures en automatisant le processus de détection, d'analyse et de stockage d...

Automatisez vos factures QuickBooks avec Onfleet