Extracción de datos de facturas de correos electrónicos a Google Sheets

Intermedio

Este es unFinance, AIflujo de automatización del dominio deautomatización que contiene 10 nodos.Utiliza principalmente nodos como Code, Filter, GoogleDrive, GmailTrigger, GoogleSheets, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Extraer datos de facturas de correos a Google Sheets usando la automatización de GPT-4o AI

Requisitos previos
  • Credenciales de API de Google Drive
  • Cuenta de Google y credenciales de API de Gmail
  • Credenciales de API de Google Sheets
  • Clave de API de OpenAI
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
{
  "meta": {
    "instanceId": "5aaf4236c70e34e423fbdb2c7b754d19253a933bb1476d548f75848a01e473cf",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "70ca3a90-55c8-4e46-9278-6a8fd3d107cd",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -1820,
        220
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "labelIds": [
            "Label_1393502052621954450"
          ]
        },
        "options": {
          "downloadAttachments": true
        },
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f7dcff0f-7e98-4042-a33e-2fc32d876908",
      "name": "Crear hoja de cálculo en blanco",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -780,
        220
      ],
      "parameters": {
        "title": "=invoice_{{ $now }}",
        "options": {},
        "resource": "spreadsheet",
        "sheetsUi": {
          "sheetValues": [
            {
              "title": "=invoice_details"
            }
          ]
        }
      },
      "executeOnce": false,
      "typeVersion": 4.5
    },
    {
      "id": "9769ad04-a41c-4d55-806a-042b7d00e131",
      "name": "Mover hoja de cálculo a carpeta de facturas",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -560,
        220
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.spreadsheetId }}"
        },
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1JIdajTJvK6gj4bRjniBJvHEJbQ1pn3AM",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1JIdajTJvK6gj4bRjniBJvHEJbQ1pn3AM",
          "cachedResultName": "invoices"
        },
        "operation": "move"
      },
      "typeVersion": 3
    },
    {
      "id": "f9dbfe55-70b0-4abc-9745-9f4a65d5d1c2",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1180,
        480
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {
          "responseFormat": "json_object"
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "7dME1fmMlkFyzFjq",
          "name": "OpenAi account 2"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "00c59142-6079-4e9c-9374-ad487e48f072",
      "name": "Verificación de Adjuntos",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1600,
        220
      ],
      "parameters": {
        "options": {
          "ignoreCase": false
        },
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "efd974d9-aa20-461a-86ae-6e0a16d1527d",
              "operator": {
                "type": "object",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $('Gmail Trigger').item.binary }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8a29ac14-be2b-468a-97fa-540d28e80006",
      "name": "Extraer datos de factura",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -1380,
        220
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "={{ $('Attachment Verification').item.binary.keys() }}"
      },
      "typeVersion": 1
    },
    {
      "id": "ae08cdc8-fcf9-4891-be86-b2dcf6f35278",
      "name": "Preparar datos finales",
      "type": "n8n-nodes-base.code",
      "position": [
        -340,
        220
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of $input$json.output.first().json.outputeach one\n\nlet invoice_details = $('Invoice AI Agent').item.json.output\n\nreturn JSON.parse(invoice_details)"
      },
      "typeVersion": 2
    },
    {
      "id": "7615a5b0-8761-43e2-82b0-32ac5c772f44",
      "name": "Hoja de cálculo final con datos de factura",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -140,
        220
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "billed_to",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "billed_to",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "invoice_number",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "invoice_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "date_of_issue",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "date_of_issue",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "due_date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "due_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "item_0_description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "item_0_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "item_0_quantity",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "item_0_quantity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "item_0_rate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "item_0_rate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "item_0_amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "item_0_amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tax_0_cgst_rate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tax_0_cgst_rate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tax_0_cgst_amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tax_0_cgst_amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tax_0_sgst_rate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tax_0_sgst_rate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tax_0_sgst_amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tax_0_sgst_amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "item_0_total_amount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "item_0_total_amount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subtotal",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subtotal",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "total",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "total",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "terms",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "terms",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "conditions_instructions",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "conditions_instructions",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_mobile",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_mobile",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "payment_transaction_ids",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "payment_transaction_ids",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "mode_of_payment",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "mode_of_payment",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "billing_address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "billing_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shipping_address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "shipping_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "place_of_supply",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "place_of_supply",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "place_of_delivery",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "place_of_delivery",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "gst_registration_no",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "gst_registration_no",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "pan_no",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "pan_no",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "invoice_details"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create blank spreadsheet').item.json.spreadsheetId }}"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "e68aa386-7150-4070-a5d7-1dcb963b620d",
      "name": "Invoice AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1160,
        220
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "systemMessage": "you are an financial advisor , who reads the array of data to identify certain elements of an Invoice, from the input data and provide a json response. use only following specified keys \nfor example:\n{\n\"billed_to\": \"John\",\n\"invoice_number\": \"569871234\",\n\"date_of_issue\": \"2025-05-21\",\n\"due_date\": \"2025-05-25\",\n\"item_0_description\": \"Computer CPU\",\n\"item_0_quantity\": 6,\n\"item_0_rate\": 15,\n\"item_0_amount\": 90,\n\"item_1_description\": \"Chair Wooden\",\n\"item_1_quantity\": 8,\n\"item_1_rate\": 10,\n\"item_1_amount\": 80,\n\"subtotal\": 170.00,\n\"discount\": 20.00,\n\"total\": 150.00,\n\"terms\": \"Sold items not be acceptable\",\n\"conditions_instructions\": \"xyaABC\",\n\"company_name\": \"Digital Electronics\",\n\"company_mobile\": \"987654321\",\n\"company_email\": \"ayz@gmail.com\",\n\"company_website\": \"www.abc.com\"\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9,
      "alwaysOutputData": false
    },
    {
      "id": "335a80c5-ad86-4379-b1a6-9a2ef7285f3c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2860,
        100
      ],
      "parameters": {
        "width": 880,
        "height": 1520,
        "content": "AI Invoice Processor Agent: Email to Structured Data\nAutomatically extract, analyze, and organize invoice data from Gmail attachments into structured Google Sheets. Perfect for:\n✅ Accountants & bookkeepers — eliminate manual data entry from invoices\n✅ Small businesses — streamline invoice processing and tracking\n✅ Finance teams — automate accounts payable workflows\n\n⚙️ What's Used\nn8n Nodes:\nGmail Trigger → File Extraction → AI Agent → OpenAI Chat Model → Google Sheets → Google Drive\nExternal Tools:\n\nGmail API – Monitor specific labeled emails with attachments\nPDF Extraction – Convert invoice PDFs to readable text\nOpenAI GPT-4 – Intelligent invoice data extraction and structuring\nGoogle Sheets – Create organized spreadsheets with invoice details\nGoogle Drive – Automatically organize files in invoice folders\n\n\n🔑 Setup – Credentials Needed\n\nGmail OAuth2 → Access emails and download attachments\nOpenAI API Key → For AI-powered invoice data extraction\nGoogle Sheets OAuth2 → Create and populate spreadsheets\nGoogle Drive OAuth2 → Organize files in designated folders\n\n\n📧 Gmail Setup Required\nCreate a Gmail label (e.g., \"Invoice Processing\") and apply it to emails containing invoice attachments. The workflow will monitor this label for new emails every minute.\n\n🚀 Workflow Steps\n\nEmail Monitoring\nContinuously watches Gmail for new emails with specific labels and attachments\nAttachment Verification\nFilters emails to ensure they contain PDF attachments before processing\nData Extraction\nConverts PDF invoices to text and extracts readable content\nAI-Powered Analysis\nGPT processes invoice text and extracts structured data including:\n\nCompany details and contact information\nInvoice numbers, dates, and due dates\nLine items with quantities, rates, and amounts\nTax calculations (CGST, SGST, VAT)\nPayment terms and billing addresses\n\n\nSpreadsheet Creation\nCreates timestamped Google Sheets with organized invoice data\nFile Organization\nMoves processed spreadsheets to designated Drive folders for easy access\n\n\n📊 Extracted Data Fields\nThe AI identifies and organizes 25+ invoice elements:\n\nHeader Info: Billed to, invoice number, dates\nLine Items: Description, quantity, rate, amount\nTax Details: CGST/SGST rates and amounts\nCompany Info: Name, contact details, GST numbers\nPayment Info: Transaction IDs, payment methods\nAddresses: Billing, shipping, delivery locations\n\n\n💡 Pro Tips\n\nUse clear Gmail labels for different invoice types (vendors, clients, etc.)\nEnsure invoice PDFs are text-based (not scanned images) for best results\nCreate separate Drive folders for different accounting periods\nReview AI extraction accuracy and refine prompts as needed\nSet up email filters to automatically apply labels to vendor emails\n\n\n🛠️ Customize It\n\nAdd invoice approval workflows with email notifications\nConnect to accounting software (QuickBooks, Xero, SAP)\nInclude OCR processing for scanned invoice images\nAdd duplicate invoice detection and alerts\nCreate automated payment reminders based on due dates"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "70ca3a90-55c8-4e46-9278-6a8fd3d107cd": {
      "main": [
        [
          {
            "node": "00c59142-6079-4e9c-9374-ad487e48f072",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e68aa386-7150-4070-a5d7-1dcb963b620d": {
      "main": [
        [
          {
            "node": "f7dcff0f-7e98-4042-a33e-2fc32d876908",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f9dbfe55-70b0-4abc-9745-9f4a65d5d1c2": {
      "ai_languageModel": [
        [
          {
            "node": "e68aa386-7150-4070-a5d7-1dcb963b620d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "8a29ac14-be2b-468a-97fa-540d28e80006": {
      "main": [
        [
          {
            "node": "e68aa386-7150-4070-a5d7-1dcb963b620d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ae08cdc8-fcf9-4891-be86-b2dcf6f35278": {
      "main": [
        [
          {
            "node": "7615a5b0-8761-43e2-82b0-32ac5c772f44",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "00c59142-6079-4e9c-9374-ad487e48f072": {
      "main": [
        [
          {
            "node": "8a29ac14-be2b-468a-97fa-540d28e80006",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f7dcff0f-7e98-4042-a33e-2fc32d876908": {
      "main": [
        [
          {
            "node": "9769ad04-a41c-4d55-806a-042b7d00e131",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9769ad04-a41c-4d55-806a-042b7d00e131": {
      "main": [
        [
          {
            "node": "ae08cdc8-fcf9-4891-be86-b2dcf6f35278",
            "type": "main",
            "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?

Intermedio - Finanzas, Inteligencia Artificial

¿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
Intermedio
Número de nodos10
Categoría2
Tipos de nodos9
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Yaron Been

Yaron Been

@yaron-nofluff

Building AI Agents and Automations | Growth Marketer | Entrepreneur | Book Author & Podcast Host

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34