Generador inteligente de informes a partir de archivos xlsx, xls o csv con análisis basado en IA

Avanzado

Este es unDocument Extraction, Multimodal AIflujo de automatización del dominio deautomatización que contiene 35 nodos.Utiliza principalmente nodos como If, Set, Code, Wait, Switch. Usar Gemini AI y Google Workspace para generar informes profesionales a partir de Excel/CSV

Requisitos previos
  • Punto final de HTTP Webhook (n8n generará automáticamente)
  • Cuenta de Google y credenciales de API de Gmail
  • Clave de API de Google Gemini
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "XyEbEQekLEetZ0za",
  "meta": {
    "instanceId": "7578372eeadee5ee5414cdf5a06141eebec63e21f295454563ddce7b1217363f",
    "templateCredsSetupCompleted": true
  },
  "name": "Intelligent report generator from xlsx, xls or csv files with AI-based analysis",
  "tags": [],
  "nodes": [
    {
      "id": "c092baf2-d272-4514-ae17-3f280ad8aa1a",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        160,
        96
      ],
      "webhookId": "dbcef205-4d1e-456e-9e28-2f0f291dfc43",
      "parameters": {
        "path": "generer-rapport",
        "options": {
          "ignoreBots": true,
          "allowedOrigins": "*"
        },
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "0cfd98f4-b0d8-40c8-99b3-241ae27ac659",
      "name": "Al enviar el formulario",
      "type": "n8n-nodes-base.formTrigger",
      "disabled": true,
      "position": [
        -192,
        -240
      ],
      "webhookId": "bb3d1e58-bd2b-42c1-b9b0-05d36a4fc557",
      "parameters": {
        "options": {},
        "formTitle": "file",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "file",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "45a26bfd-d68b-43a6-a921-3bd060cf6ce0",
      "name": "Extraer desde archivo",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        608,
        96
      ],
      "parameters": {
        "options": {},
        "operation": "xlsx",
        "binaryPropertyName": "file"
      },
      "typeVersion": 1
    },
    {
      "id": "c9cb71b7-ce40-4750-b287-942367fb5454",
      "name": "Agente de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1648,
        96
      ],
      "parameters": {
        "text": "=**Objectif :** Rapport d'analyse JSON complet.\n\n**Données à traiter :**\n```\n{{ $('Set data for llm').item.json.data }}\n```\n\n**Processus accéléré :**\n1. `query_data_tool` → récupération modèle\n2. `Think` → analyse structure + plan\n3. Génération JSON finale\n\n**Date :** {{ new Date().toLocaleDateString('fr-FR') }}\n**Public :** Décideurs publics\n\n**SORTIE REQUISE :** Objet JSON uniquement, format `{...}`",
        "options": {
          "systemMessage": "Tu es un agent IA expert en services publics (eau, assainissement, déchets, transport). Génère directement des analyses structurées de qualité consultant senior.\n\n## WORKFLOW \n1. **Récupération modèle** (`query_data_tool`) : \"modèle rapport services publics\"\n2. **Analyse express** (`Think`) : Structure + lacunes + plan final\n3. **Génération immédiate** : JSON complet uniquement\n\n## CRITÈRES QUALITÉ\n- Affirmations étayées par données\n- Contextualisation réglementaire/économique\n- Style professionnel précis\n- Structure cohérente du modèle de référence\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "91c74070-5694-4399-8b7f-e24accaf51fd",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1408,
        384
      ],
      "parameters": {
        "options": {
          "maxOutputTokens": 1000000
        }
      },
      "credentials": {
        "googlePalmApi": {
          "id": "89mVPG21GxPFECbN",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "12fa0c0f-5914-4293-87c6-1fc4c84fcfe6",
      "name": "Establecer datos para LLM",
      "type": "n8n-nodes-base.set",
      "position": [
        1408,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "8d87ca3c-ac19-4495-a21c-e6dd3c357b64",
              "name": "data",
              "type": "string",
              "value": "={{ JSON.stringify($('Extract from File').all()) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "047d5cdd-b127-489b-bd4c-b702389ed807",
      "name": "Pensar",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        1536,
        384
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "daa70af2-8a4b-4a82-88eb-9a61129ef693",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        304,
        -272
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "pdf",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "3f2744a6-2502-4e49-98b3-1a963b156dac",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.filename.split('.').pop()}}",
                    "rightValue": "pdf"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "xlsx",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "99fe1dbc-409c-4249-b76b-e16e19214f9e",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.filename.split('.').pop()}}",
                    "rightValue": "xlsx"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "docx",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6f0aba8b-2201-4804-9e6a-71eec33ad07f",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.filename.split('.').pop()}}",
                    "rightValue": "docx"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "pptx",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "9b67b06a-5db8-4e54-8670-8e3de6218417",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "pptx",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "92f0dfaa-3425-4005-b1db-57649e89ed1b",
      "name": "Analizar y limpiar respuesta de IA",
      "type": "n8n-nodes-base.code",
      "position": [
        2496,
        80
      ],
      "parameters": {
        "jsCode": "// Ce script prend la sortie texte brute de l'Agent IA,\n// la nettoie, et la transforme en un objet JSON valide.\n\n// La sortie de l'Agent IA (en mode String) est dans la propriété 'output'.\nconst rawText = $input.item.json.output;\n\n// Vérification de robustesse : s'assurer que rawText existe avant de le traiter.\nif (typeof rawText !== 'string' || rawText.trim() === '') {\n  // Si rawText n'est pas une chaîne de caractères ou est vide, l'Agent IA a probablement échoué.\n  console.error(\"L'entrée de l'Agent IA est manquante ou n'est pas une chaîne de caractères.\", $input.item.json);\n  throw new Error(\"La sortie de l'Agent IA est vide ou invalide. Vérifiez l'exécution du nœud 'AI Agent'.\");\n}\n\n// Étape 1: Nettoyer le texte. On enlève les blocs de code markdown (```json ... ```) que l'IA ajoute souvent.\nlet cleanedText = rawText.replace(/^```json\\s*/, '').replace(/```$/, '');\n\n// Étape 2: Trouver le début et la fin de l'objet JSON pour enlever tout texte superflu.\nconst firstBracket = cleanedText.indexOf('{');\nconst lastBracket = cleanedText.lastIndexOf('}');\n\nif (firstBracket === -1 || lastBracket === -1) {\n  throw new Error(\"La réponse de l'IA ne contient pas de JSON valide (accolades manquantes).\");\n}\ncleanedText = cleanedText.substring(firstBracket, lastBracket + 1);\n\ntry {\n  // Étape 3: Tenter de parser le texte nettoyé en objet JSON.\n  const jsonData = JSON.parse(cleanedText);\n  // Retourner l'objet JSON propre pour le nœud suivant.\n  return { json: jsonData };\n} catch (error) {\n  // Si le parsing échoue, enregistrer les détails pour le débogage.\n  console.error(\"Erreur de parsing JSON:\", error);\n  throw new Error(`Impossible de parser la réponse de l'IA. Réponse brute nettoyée: ${cleanedText}`);\n}\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e64779ec-59fb-46d4-8e72-b3b0ff369f82",
      "name": "Agregar datos",
      "type": "n8n-nodes-base.code",
      "position": [
        1168,
        96
      ],
      "parameters": {
        "jsCode": "// Ce script récupère tous les items (lignes) du noeud précédent.\nconst allItems = $input.all();\n\n// On extrait la partie 'json' de chaque item pour ne garder que les données.\nconst jsonData = allItems.map(item => item.json);\n\n// On crée un objet de sortie unique qui contient toutes les données\n// converties en une chaîne de texte JSON.\nconst output = {\n  data: JSON.stringify(jsonData)\n};\n\n// On retourne ce nouvel objet. Le workflow continuera avec un seul item.\nreturn { json: output };"
      },
      "typeVersion": 2
    },
    {
      "id": "1b83ee5d-d015-49dc-b79e-4084464b56e7",
      "name": "If1",
      "type": "n8n-nodes-base.if",
      "position": [
        2208,
        96
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5f70e4b4-744e-429c-b808-e5980b3068e9",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.output }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "02a87a70-de7e-4dca-a202-ac1979a9b161",
      "name": "Wait2",
      "type": "n8n-nodes-base.wait",
      "position": [
        2288,
        432
      ],
      "webhookId": "396d9529-9a8e-4d1d-a51d-d435c318d369",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "adaf5f63-3a17-4e82-8a83-068f32ced066",
      "name": "Agregar",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        928,
        96
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "0686fbfd-63a2-4fd0-8fa7-19c65fcf8784",
      "name": "Llamar Transformar datos PDF a markdown",
      "type": "n8n-nodes-base.executeWorkflow",
      "position": [
        656,
        -224
      ],
      "parameters": {
        "options": {},
        "workflowId": {
          "__rl": true,
          "mode": "list",
          "value": "PAB8VMzM4HcZLqrm"
        },
        "workflowInputs": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "283d2024-33b0-45a9-b34f-882aae20d211",
      "name": "Responder a Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        3504,
        96
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "={{ $json.output }}"
      },
      "typeVersion": 1.4
    },
    {
      "id": "81acccc0-7171-4af2-9a6d-705c52efbb58",
      "name": "Think1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        2864,
        304
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "29745f55-a827-48d5-9f35-7ffb268c152f",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        3104,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5f70e4b4-744e-429c-b808-e5980b3068e9",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.output }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e24f16e8-83ed-4659-ad09-c83bd25f8cc9",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        3616,
        528
      ],
      "webhookId": "396d9529-9a8e-4d1d-a51d-d435c318d369",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "64100db0-dc2e-412c-8b5b-ba80b4ca5b69",
      "name": "Crear un documento en Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        3408,
        784
      ],
      "parameters": {
        "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
        "folderId": "default"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "osBJI4KIPRu07ngs",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e8733e43-1b5a-45fc-bf01-7d724e056e9e",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        784,
        752
      ],
      "parameters": {
        "options": {},
        "dataType": "binary"
      },
      "typeVersion": 1.1
    },
    {
      "id": "d89e53ba-7053-4f57-bad9-e606309bb718",
      "name": "Insertar datos en almacenamiento",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
      "position": [
        704,
        544
      ],
      "parameters": {
        "mode": "insert",
        "memoryKey": {
          "__rl": true,
          "mode": "list",
          "value": "vector_store_key",
          "cachedResultName": "vector_store_key"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "83721b71-48b1-4480-9ad5-00116e5f11ce",
      "name": "Embeddings Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        640,
        752
      ],
      "parameters": {},
      "credentials": {
        "googlePalmApi": {
          "id": "89mVPG21GxPFECbN",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "71720028-f795-4ff4-94b0-220bed8db36e",
      "name": "Google Gemini Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2576,
        544
      ],
      "parameters": {
        "options": {
          "maxOutputTokens": 10000
        },
        "modelName": "models/gemini-2.5-pro"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "89mVPG21GxPFECbN",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8cbc4307-3842-42df-98ea-ea292d0969f1",
      "name": "Query Data Tool1",
      "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory",
      "position": [
        1776,
        368
      ],
      "parameters": {
        "mode": "retrieve-as-tool",
        "toolName": "knowledge_base",
        "memoryKey": {
          "__rl": true,
          "mode": "list",
          "value": "vector_store_key"
        },
        "toolDescription": "Use this knowledge base to answer questions from the user"
      },
      "typeVersion": 1.2
    },
    {
      "id": "63740075-f0a9-488c-b5b9-baddad0d5ea0",
      "name": "Embeddings Google Gemini2",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        1808,
        480
      ],
      "parameters": {},
      "credentials": {
        "googlePalmApi": {
          "id": "89mVPG21GxPFECbN",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a41fc482-7614-4675-9812-691ef5a57670",
      "name": "Obtener un documento en Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        3552,
        752
      ],
      "parameters": {
        "operation": "get",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "osBJI4KIPRu07ngs",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "19f610f1-e535-45bb-95af-ecd6fb37de82",
      "name": "Actualizar un documento en Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        3296,
        784
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Text', ``, 'string') }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "id": "osBJI4KIPRu07ngs",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ca4023c5-1827-4327-bd00-95845aed6939",
      "name": "DB",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        544,
        544
      ],
      "webhookId": "82848bc4-5ea2-4e5a-8bb6-3c09b94a8c5d",
      "parameters": {
        "options": {},
        "formTitle": "Upload your data to test RAG",
        "formFields": {
          "values": [
            {
              "fieldType": "file",
              "fieldLabel": "Upload your file(s)",
              "requiredField": true,
              "acceptFileTypes": ".pdf, .csv"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4ac52a39-600b-4851-8ee2-b12509031fa6",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        96,
        -240
      ],
      "parameters": {
        "jsCode": "// Dans un nœud Code\nconst binaryData = $node[\"On form submission\"].binary;\nlet filename = \"\";\n\nif (binaryData && Object.keys(binaryData).length > 0) {\n  const firstKey = Object.keys(binaryData)[0];\n  const fileData = binaryData[firstKey];\n  \n  // Le nom peut être dans fileName ou filename\n  filename = fileData.fileName || fileData.filename || \"fichier_inconnu\";\n}\n\nreturn [{ json: { filename } }];"
      },
      "typeVersion": 2
    },
    {
      "id": "a56ab4b1-a29c-455e-9668-582bf6792fcf",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2000,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e2579242-2cf7-45c0-957b-6eb3ee97ef23",
              "name": "output",
              "type": "string",
              "value": "={{ $json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "acea6026-2faf-4e30-b3ce-48386d4d5573",
      "name": "AI Agent Tool1",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        3072,
        288
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "### Phase 1: Analyse Immédiate du Rapport \n**Extraire du rapport reçu :**\n- Titre principal \n- Structure des sections (I, II, III...)\n- Données tabulaires à formater\n- Listes et éléments de mise en forme\n\n### Phase 2: Création Google Docs TEXTUELLE \n**IMPORTANT : Créer du TEXTE formaté, PAS du JSON**\n\n**Structure obligatoire à générer :**\n\n```\nTITRE PRINCIPAL\n[Style : Titre - gras, centré, taille 18]\n\nTable des matières\n[Insérer automatiquement via Google Docs]\n\nI. PREMIÈRE SECTION\n[Style : Titre 1 - gras, taille 16]\n\nParagraphe d'introduction expliquant le contexte et les objectifs de cette section avec des phrases complètes et professionnelles.\n\nA. Sous-section principale\n[Style : Titre 2 - gras, taille 14]\n\nContenu détaillé avec analyse contextuelle. Les données doivent être présentées de manière narrative et professionnelle.\n\nTABLEAU : [Titre du tableau]\n| Colonne 1        | Colonne 2        |\n|------------------|------------------|\n| Données ligne 1  | Valeurs ligne 1  |\n| Données ligne 2  | Valeurs ligne 2  |\n\nB. Autre sous-section\n[Contenu structuré similaire]\n\nII. DEUXIÈME SECTION\n[Même structure hiérarchique]\n\nSYNTHÈSE ET RECOMMANDATIONS\n[Section finale avec conclusions]\n```\n\n### Phase 3: Commandes Google Docs UNIQUEMENT pour Formatage\n**Utiliser les outils Google Docs UNIQUEMENT pour :**\n1. Appliquer les styles (Titre, Titre 1, Titre 2)\n2. Formater les tableaux avec bordures\n3. Appliquer gras/italique aux éléments importants\n4. Insérer la table des matières\n\n**INTERDICTIONS ABSOLUES :**\n- ❌ JAMAIS de JSON visible dans le document\n- ❌ JAMAIS de commandes brutes type \"insertText\"\n- ❌ JAMAIS de syntaxe technique dans le contenu final\n\n### Phase 4: Vérification et Génération Lien\n**Contrôles avant finalisation :**\n✓ Document lisible en français\n✓ Structure claire et hiérarchique  \n✓ Tableaux correctement formatés\n✓ Aucun code technique visible\n✓ Mise en forme professionnelle appliquée\n\n**Générer le lien de téléchargement .docx**\n\n## TEMPLATE DE TRANSFORMATION\n\n**Transformer :**\n```json\n\"insertText\": {\"text\": \"Analyse Financière\"}\n```\n\n**En :**\n```\nAnalyse Financière\n```\n\n**Puis appliquer le formatage Google Docs pour le style Titre 1**\n\n## RÈGLES DE CONTENU\n\n**Pour chaque section du rapport :**\n1. **Titre clair** en français\n2. **Introduction contextuelle** (2-3 phrases)  \n3. **Développement structuré** avec données intégrées naturellement\n4. **Tableaux formatés** pour données chiffrées\n5. **Conclusion/transition** vers section suivante\n\n**Style rédactionnel :**\n- Phrases complètes et professionnelles\n- Terminologie adaptée aux décideurs publics\n- Analyses contextuelles des données\n- Pas de jargon technique visible\n\n## SORTIE FINALE\n**UNIQUEMENT le lien de téléchargement :**\n```\nhttps://docs.google.com/document/d/[ID]/export?format=docx\n```\n\n**Le document téléchargé doit être :**\n- Entièrement lisible en français\n- Structuré professionnellement  \n- Sans aucun code technique\n- Prêt pour présentation aux décideurs"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9",
      "name": "AI Agent1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2736,
        80
      ],
      "parameters": {
        "text": "=Traitement JSON → Rapport Google Docs → Envoi automatique.\n\n**ÉTAPES OBLIGATOIRES :**\n1. **'Think'** : Analyse structure JSON (1 min)\n2. **Génération** : Rapport Google Docs formaté (3 min) \n3. **'AI Agent Tool'** : Envoi automatique du rapport généré (OBLIGATOIRE)\n4. **Sortie** : Lien de téléchargement uniquement\n\n**Données JSON à traiter :**\n```json\n{{ JSON.stringify($('Parse and Clean AI Response').item.json) }}\n```\n\n**Action immédiate requise - Pas d'explications intermédiaires.**",
        "options": {
          "systemMessage": "## Mission\nAgent de transformation JSON vers rapport Google Docs professionnel avec traitement automatisé obligatoire.\n\n## Workflow Streamliné (3 Phases)\n\n### Phase 1: Analyse Express (2 min max)\n**Utiliser l'outil 'Think' pour analyser rapidement :**\n- Structure JSON : identifier types de données (tableaux, listes, valeurs clés)\n- Architecture cible : définir sections principales uniquement\n- Éléments critiques : repérer données quantitatives pour tableaux\n\n### Phase 2: Génération Rapport (5 min max)\n**Format Google Docs STRICT :**\n1. **Titre principal** (style Titre)\n2. **Sections principales** (Titre 1) - Maximum 5 sections\n3. **Tableaux** pour toutes données structurées (insertTable)\n4. **Paragraphes** synthétiques en texte normal\n5. **Listes** via commandes Google Docs uniquement\n\n**Templates de formatage rapide :**\n```\nTitres: insertText + updateTextStyle (HEADING_1/2/3)\nTableaux: insertTable + formatage cellules\nTexte: insertText (NORMAL_TEXT)\nGras: updateTextStyle (BOLD: true)\n```\n\n### Phase 3: Envoi Automatique (OBLIGATOIRE)\n**IMMÉDIATEMENT après génération du rapport :**\n1. Utiliser 'AI Agent Tool' avec le rapport complet comme user_message\n2. Récupérer le lien de téléchargement\n3. Retourner UNIQUEMENT le lien (pas d'explications)\n\n## Règles d'Efficacité\n- **NO MARKDOWN/HTML** dans le document final\n- **Tableaux systematiques** pour données structurées\n- **Synthèse directe** : pas d'analyse détaillée, action immédiate\n- **Format professionnel** mais optimisé pour la vitesse\n\n## Points Critiques\n1. Utiliser 'Think' pour planification rapide\n2. Générer rapport directement compatible Google Docs\n3. Envoi AUTOMATIQUE via 'AI Agent Tool' - JAMAIS d'oubli\n4. Retour UNIQUEMENT du lien final\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "89aae5d1-25b2-4514-94ee-c29701766260",
      "name": "Crear una presentación en Google Slides",
      "type": "n8n-nodes-base.googleSlidesTool",
      "position": [
        2976,
        768
      ],
      "parameters": {
        "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "YxA3lFXuzHxrYXyh",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4db12769-c5ff-448e-9683-b297971f53ff",
      "name": "Enviar un mensaje en Gmail",
      "type": "n8n-nodes-base.gmailTool",
      "position": [
        3152,
        880
      ],
      "webhookId": "6ac45ca1-53ad-404d-b0df-72e5cf95f648",
      "parameters": {
        "sendTo": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('To', ``, 'string') }}",
        "message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
        "options": {},
        "subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "bCMxMEI1mYg8Dfji",
          "name": "Gmail account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "11fdf13f-479e-472d-9325-afddaa28d450",
      "name": "Reemplazar texto en una presentación en Google Slides",
      "type": "n8n-nodes-base.googleSlidesTool",
      "position": [
        2816,
        768
      ],
      "parameters": {
        "options": {},
        "operation": "replaceText",
        "presentationId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Presentation_ID', ``, 'string') }}"
      },
      "credentials": {
        "googleSlidesOAuth2Api": {
          "id": "YxA3lFXuzHxrYXyh",
          "name": "Google Slides account"
        }
      },
      "typeVersion": 2
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "96dcf1a7-26ca-4b12-a1b4-1e63a5ec0bf1",
  "connections": {
    "ca4023c5-1827-4327-bd00-95845aed6939": {
      "main": [
        [
          {
            "node": "d89e53ba-7053-4f57-bad9-e606309bb718",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "29745f55-a827-48d5-9f35-7ffb268c152f": {
      "main": [
        [
          {
            "node": "e24f16e8-83ed-4659-ad09-c83bd25f8cc9",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "283d2024-33b0-45a9-b34f-882aae20d211",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1b83ee5d-d015-49dc-b79e-4084464b56e7": {
      "main": [
        [
          {
            "node": "92f0dfaa-3425-4005-b1db-57649e89ed1b",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "02a87a70-de7e-4dca-a202-ac1979a9b161",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4ac52a39-600b-4851-8ee2-b12509031fa6": {
      "main": [
        [
          {
            "node": "daa70af2-8a4b-4a82-88eb-9a61129ef693",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e24f16e8-83ed-4659-ad09-c83bd25f8cc9": {
      "main": [
        [
          {
            "node": "a56ab4b1-a29c-455e-9668-582bf6792fcf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "047d5cdd-b127-489b-bd4c-b702389ed807": {
      "ai_tool": [
        [
          {
            "node": "c9cb71b7-ce40-4750-b287-942367fb5454",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "02a87a70-de7e-4dca-a202-ac1979a9b161": {
      "main": [
        [
          {
            "node": "12fa0c0f-5914-4293-87c6-1fc4c84fcfe6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "daa70af2-8a4b-4a82-88eb-9a61129ef693": {
      "main": [
        [
          {
            "node": "0686fbfd-63a2-4fd0-8fa7-19c65fcf8784",
            "type": "main",
            "index": 0
          }
        ],
        [],
        [],
        []
      ]
    },
    "81acccc0-7171-4af2-9a6d-705c52efbb58": {
      "ai_tool": [
        [
          {
            "node": "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c092baf2-d272-4514-ae17-3f280ad8aa1a": {
      "main": [
        [
          {
            "node": "45a26bfd-d68b-43a6-a921-3bd060cf6ce0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c9cb71b7-ce40-4750-b287-942367fb5454": {
      "main": [
        [
          {
            "node": "a56ab4b1-a29c-455e-9668-582bf6792fcf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9": {
      "main": [
        [
          {
            "node": "29745f55-a827-48d5-9f35-7ffb268c152f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "adaf5f63-3a17-4e82-8a83-068f32ced066": {
      "main": [
        [
          {
            "node": "e64779ec-59fb-46d4-8e72-b3b0ff369f82",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a56ab4b1-a29c-455e-9668-582bf6792fcf": {
      "main": [
        [
          {
            "node": "1b83ee5d-d015-49dc-b79e-4084464b56e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "acea6026-2faf-4e30-b3ce-48386d4d5573": {
      "ai_tool": [
        [
          {
            "node": "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "e64779ec-59fb-46d4-8e72-b3b0ff369f82": {
      "main": [
        [
          {
            "node": "12fa0c0f-5914-4293-87c6-1fc4c84fcfe6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8cbc4307-3842-42df-98ea-ea292d0969f1": {
      "ai_tool": [
        [
          {
            "node": "c9cb71b7-ce40-4750-b287-942367fb5454",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "12fa0c0f-5914-4293-87c6-1fc4c84fcfe6": {
      "main": [
        [
          {
            "node": "c9cb71b7-ce40-4750-b287-942367fb5454",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "45a26bfd-d68b-43a6-a921-3bd060cf6ce0": {
      "main": [
        [
          {
            "node": "adaf5f63-3a17-4e82-8a83-068f32ced066",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0cfd98f4-b0d8-40c8-99b3-241ae27ac659": {
      "main": [
        [
          {
            "node": "4ac52a39-600b-4851-8ee2-b12509031fa6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "283d2024-33b0-45a9-b34f-882aae20d211": {
      "main": [
        [
          {
            "node": "283d2024-33b0-45a9-b34f-882aae20d211",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e8733e43-1b5a-45fc-bf01-7d724e056e9e": {
      "ai_document": [
        [
          {
            "node": "d89e53ba-7053-4f57-bad9-e606309bb718",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "4db12769-c5ff-448e-9683-b297971f53ff": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "83721b71-48b1-4480-9ad5-00116e5f11ce": {
      "ai_embedding": [
        [
          {
            "node": "d89e53ba-7053-4f57-bad9-e606309bb718",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "91c74070-5694-4399-8b7f-e24accaf51fd": {
      "ai_languageModel": [
        [
          {
            "node": "c9cb71b7-ce40-4750-b287-942367fb5454",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "63740075-f0a9-488c-b5b9-baddad0d5ea0": {
      "ai_embedding": [
        [
          {
            "node": "8cbc4307-3842-42df-98ea-ea292d0969f1",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "71720028-f795-4ff4-94b0-220bed8db36e": {
      "ai_languageModel": [
        [
          {
            "node": "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "92f0dfaa-3425-4005-b1db-57649e89ed1b": {
      "main": [
        [
          {
            "node": "bd41c4d1-d049-4e33-91c8-b1f11a8e9dc9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a41fc482-7614-4675-9812-691ef5a57670": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "64100db0-dc2e-412c-8b5b-ba80b4ca5b69": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "19f610f1-e535-45bb-95af-ecd6fb37de82": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "0686fbfd-63a2-4fd0-8fa7-19c65fcf8784": {
      "main": [
        [
          {
            "node": "adaf5f63-3a17-4e82-8a83-068f32ced066",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "89aae5d1-25b2-4514-94ee-c29701766260": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "11fdf13f-479e-472d-9325-afddaa28d450": {
      "ai_tool": [
        [
          {
            "node": "acea6026-2faf-4e30-b3ce-48386d4d5573",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Extracción de documentos, IA Multimodal

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos35
Categoría2
Tipos de nodos21
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34