Workflow: Extractfromfile HTTP Automation

Workflow Details

Download Workflow
{
    "id": "XnGZZfT5u0Cw1X3p",
    "meta": {
        "instanceId": "3378b0d68c3b7ebfc71b79896d94e1a044dec38e99a1160aed4e9c323910fbe2",
        "templateCredsSetupCompleted": true
    },
    "name": "Attachments Gmail to drive and google sheets",
    "tags": [],
    "nodes": [
        {
            "id": "0404ef0a-9750-495a-8798-98d4b059a083",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -580,
                -420
            ],
            "parameters": {
                "height": 440,
                "content": "## Setup\n1. Setup your **Gmail** and **Google Drive** credentials\n2. Setup your **Google Sheets** credentials\n3. Setup your **Openai** api key"
            },
            "typeVersion": 1
        },
        {
            "id": "8751a7f1-aae4-4746-aae7-3d8563845b8c",
            "name": "Gmail Trigger1",
            "type": "n8n-nodes-base.gmailTrigger",
            "position": [
                -640,
                120
            ],
            "parameters": {
                "simple": false,
                "filters": {
                    "readStatus": "unread"
                },
                "options": {
                    "downloadAttachments": true
                },
                "pollTimes": {
                    "item": [
                        {
                            "mode": "everyMinute"
                        }
                    ]
                }
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "v8YJP3VfeGtRk5la",
                    "name": "Gmail account"
                }
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "40f62192-5acb-4915-aa07-e5a0dfeb7581",
            "name": "Setup1",
            "type": "n8n-nodes-base.set",
            "position": [
                -300,
                120
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "4cca07a2-6a70-4011-a025-65246e652fb9",
                            "name": "url_to_drive_folder",
                            "type": "string",
                            "value": "1fCWCdqrFP3WrjjLc-gJtxMaiaF5lh8Ko"
                        }
                    ]
                },
                "includeOtherFields": true
            },
            "typeVersion": 3.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "d928e797-8851-4ab4-9199-cd555a40eae9",
            "name": "Upload PDF to Drive1",
            "type": "n8n-nodes-base.httpRequest",
            "maxTries": 5,
            "position": [
                220,
                0
            ],
            "parameters": {
                "url": "https:\/\/www.googleapis.com\/upload\/drive\/v3\/files",
                "method": "POST",
                "options": [],
                "sendBody": true,
                "sendQuery": true,
                "contentType": "binaryData",
                "authentication": "predefinedCredentialType",
                "queryParameters": {
                    "parameters": [
                        {
                            "name": "uploadType",
                            "value": "media"
                        }
                    ]
                },
                "inputDataFieldName": "={{ $binary.attachment_0.mimeType === \"application\/pdf\"\n     ? \"attachment_0\"\n     : \"attachment_1\" }}",
                "nodeCredentialType": "googleDriveOAuth2Api"
            },
            "credentials": {
                "googleDriveOAuth2Api": {
                    "id": "p5I6S4YkJps1zvwz",
                    "name": "Google Drive account 2"
                }
            },
            "retryOnFail": true,
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "22df6933-a0c7-4cce-8114-5332038a14c3",
            "name": "Rename file1",
            "type": "n8n-nodes-base.googleDrive",
            "position": [
                400,
                0
            ],
            "parameters": {
                "fileId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $json.id }}"
                },
                "options": [],
                "operation": "update",
                "newUpdatedFileName": "={{ $('Setup1').item.json.subject }}_invoice_{{ $now.format('yyyy-MM-dd') }}.pdf"
            },
            "credentials": {
                "googleDriveOAuth2Api": {
                    "id": "p5I6S4YkJps1zvwz",
                    "name": "Google Drive account 2"
                }
            },
            "typeVersion": 3
        },
        {
            "id": "ce6a6a4c-17ba-4cf7-b07a-97b9d8d80844",
            "name": "Move to the correct folder1",
            "type": "n8n-nodes-base.googleDrive",
            "position": [
                580,
                0
            ],
            "parameters": {
                "fileId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $json.id }}"
                },
                "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": "1fCWCdqrFP3WrjjLc-gJtxMaiaF5lh8Ko",
                    "cachedResultUrl": "",
                    "cachedResultName": "2025"
                },
                "operation": "move"
            },
            "credentials": {
                "googleDriveOAuth2Api": {
                    "id": "p5I6S4YkJps1zvwz",
                    "name": "Google Drive account 2"
                }
            },
            "typeVersion": 3
        },
        {
            "id": "e64aac5c-a314-46b6-b7db-fc0d6f450e1f",
            "name": "Gmail",
            "type": "n8n-nodes-base.gmail",
            "position": [
                1240,
                0
            ],
            "webhookId": "556cbee3-8de0-4645-9e91-e7c0c252f2ab",
            "parameters": {
                "messageId": "={{ $('Gmail Trigger1').item.json.id }}",
                "operation": "markAsRead"
            },
            "credentials": {
                "gmailOAuth2": {
                    "id": "v8YJP3VfeGtRk5la",
                    "name": "Gmail account"
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "ea74cfc1-0305-418d-9f5f-bffcfb3bb2c7",
            "name": "Extract from File2",
            "type": "n8n-nodes-base.extractFromFile",
            "position": [
                1200,
                -180
            ],
            "parameters": {
                "options": [],
                "operation": "pdf"
            },
            "typeVersion": 1
        },
        {
            "id": "0398d982-78fd-4830-b5cf-271195af80fd",
            "name": "Google Drive",
            "type": "n8n-nodes-base.googleDrive",
            "position": [
                800,
                0
            ],
            "parameters": {
                "fileId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $json.id }}"
                },
                "options": [],
                "operation": "download"
            },
            "credentials": {
                "googleDriveOAuth2Api": {
                    "id": "p5I6S4YkJps1zvwz",
                    "name": "Google Drive account 2"
                }
            },
            "typeVersion": 3
        },
        {
            "id": "3b4a96d4-a6ee-486a-a795-fe410ccc38b2",
            "name": "OpenAI Model",
            "type": "@n8n\/n8n-nodes-langchain.lmOpenAi",
            "position": [
                1740,
                20
            ],
            "parameters": {
                "model": {
                    "__rl": true,
                    "mode": "list",
                    "value": "gpt-4o",
                    "cachedResultName": "gpt-4o"
                },
                "options": {
                    "temperature": 0
                }
            },
            "credentials": {
                "openAiApi": {
                    "id": "XJdxgMSXFgwReSsh",
                    "name": "n8n key"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "a7dd0d95-5e79-4bd2-a8a6-2178264d19fc",
            "name": "Structured Output Parser",
            "type": "@n8n\/n8n-nodes-langchain.outputParserStructured",
            "position": [
                1940,
                40
            ],
            "parameters": {
                "jsonSchema": "{\n  \"Invoice date\": { \"type\": \"date\" },\n  \"Invoice description\": { \"type\": \"string\" },\n  \"Total price\": { \"type\": \"number\" },\n  \"Fichero\": { \"type\": \"string\" }\n}"
            },
            "typeVersion": 1.100000000000000088817841970012523233890533447265625
        },
        {
            "id": "68d98f4c-e679-48e3-a1a1-529cda4e31a4",
            "name": "Append to Reconciliation Sheet",
            "type": "n8n-nodes-base.googleSheets",
            "position": [
                2280,
                -140
            ],
            "parameters": {
                "columns": {
                    "value": [],
                    "schema": [
                        {
                            "id": "Invoice date",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "Invoice date",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "Invoice Description",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "Invoice Description",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "Total price",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "Total price",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        },
                        {
                            "id": "Fichero",
                            "type": "string",
                            "display": true,
                            "removed": false,
                            "required": false,
                            "displayName": "Fichero",
                            "defaultMatch": false,
                            "canBeUsedToMatch": true
                        }
                    ],
                    "mappingMode": "autoMapInputData",
                    "matchingColumns": [],
                    "attemptToConvertTypes": false,
                    "convertFieldsToString": false
                },
                "options": [],
                "operation": "append",
                "sheetName": {
                    "__rl": true,
                    "mode": "id",
                    "value": "gid=0"
                },
                "documentId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "1gIUnjSWUhsoTOVVd4ZoVjARCGQfGE8s7FWcju3lNajM",
                    "cachedResultUrl": "",
                    "cachedResultName": "facturas"
                }
            },
            "credentials": {
                "googleSheetsOAuth2Api": {
                    "id": "3IOU2VjBnR4hGohx",
                    "name": "Google Sheets account"
                }
            },
            "typeVersion": 4.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "80e1c8f4-b593-4c5f-b9e2-f3b7996ee6d4",
            "name": "Sticky Note2",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1680,
                -400
            ],
            "parameters": {
                "color": 7,
                "width": 805.05783519242277179728262126445770263671875,
                "height": 656.50141861281781530124135315418243408203125,
                "content": "## 3. Use LLMs to Extract Values from Data\n[Read more about Basic LLM Chain](https:\/\/docs.n8n.io\/integrations\/builtin\/cluster-nodes\/root-nodes\/n8n-nodes-langchain.chainllm\/)\n\nLarge language models are perfect for data extraction tasks as they can work across a range of document layouts without human intervention. The extracted data can then be sent to a variety of datastores such as spreadsheets, accounting systems and\/or CRMs.\n\n**Tip:** The \"Structured Output Parser\" ensures the AI output can be\ninserted to our spreadsheet without additional clean up and\/or formatting. "
            },
            "typeVersion": 1
        },
        {
            "id": "3754e10e-a233-4ce0-bc79-bb5c01db9695",
            "name": "Map Output",
            "type": "n8n-nodes-base.set",
            "position": [
                2080,
                -140
            ],
            "parameters": {
                "mode": "raw",
                "options": [],
                "jsonOutput": "={{ $json.output }}"
            },
            "typeVersion": 3.29999999999999982236431605997495353221893310546875
        },
        {
            "id": "a42ff16f-d0df-4b6d-9a36-849f85d1facc",
            "name": "Apply Data Extraction Rules",
            "type": "@n8n\/n8n-nodes-langchain.chainLlm",
            "position": [
                1740,
                -140
            ],
            "parameters": {
                "text": "=Given the following invoice in the <invoice> xml tags, extract the following information as listed below.\nIf you cannot the information for a specific item, then leave blank and skip to the next. \n\n* Invoice date\n* Invoice Description: {{ $('Rename file1').item.json.name }}\n* Total price\n* Fichero: =HYPERLINK(\"https:\/\/drive.google.com\/file\/d\/{{ $('Move to the correct folder1').item.json.id }}\/view\", \"Ver Documento\")\n\n\n<invoice>{{ $json.text }}<\/invoice>",
                "promptType": "define",
                "hasOutputParser": true
            },
            "typeVersion": 1.399999999999999911182158029987476766109466552734375
        },
        {
            "id": "f6de5d5a-d2dc-4590-8f46-3f250b8fca9f",
            "name": "Sticky Note6",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1860,
                0
            ],
            "parameters": {
                "width": 192.26896179623753369014593772590160369873046875,
                "height": 213.7304366257225183289847336709499359130859375,
                "content": "\n\n\n\n\n\n\n\n\n\n\n\n**Need more attributes?**\nChange it here!"
            },
            "typeVersion": 1
        },
        {
            "id": "255fe8c1-5bd7-41cc-b1f9-c8956b5ad101",
            "name": "Only invoice mails with attachments",
            "type": "n8n-nodes-base.if",
            "position": [
                0,
                120
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 1,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "or",
                    "conditions": [
                        {
                            "id": "229200d1-ec13-4970-ae0e-2c8e17da0bdf",
                            "operator": {
                                "type": "string",
                                "operation": "contains"
                            },
                            "leftValue": "={{ $('Gmail Trigger1').item.json.headers['content-type'] }}",
                            "rightValue": "multipart\/mixed"
                        },
                        {
                            "id": "new-condition",
                            "operator": {
                                "type": "boolean",
                                "operation": "isNotEmpty"
                            },
                            "leftValue": "={{ $json.attachments }}"
                        }
                    ]
                }
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        }
    ],
    "active": true,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "eb152808-e993-4e18-9dd8-10f21df57bf1",
    "connections": {
        "Gmail": {
            "main": [
                []
            ]
        },
        "Setup1": {
            "main": [
                [
                    {
                        "node": "Only invoice mails with attachments",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Map Output": {
            "main": [
                [
                    {
                        "node": "Append to Reconciliation Sheet",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Google Drive": {
            "main": [
                [
                    {
                        "node": "Extract from File2",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "OpenAI Model": {
            "ai_languageModel": [
                [
                    {
                        "node": "Apply Data Extraction Rules",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Rename file1": {
            "main": [
                [
                    {
                        "node": "Move to the correct folder1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Gmail Trigger1": {
            "main": [
                [
                    {
                        "node": "Setup1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Extract from File2": {
            "main": [
                [
                    {
                        "node": "Apply Data Extraction Rules",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Upload PDF to Drive1": {
            "main": [
                [
                    {
                        "node": "Rename file1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Structured Output Parser": {
            "ai_outputParser": [
                [
                    {
                        "node": "Apply Data Extraction Rules",
                        "type": "ai_outputParser",
                        "index": 0
                    }
                ]
            ]
        },
        "Apply Data Extraction Rules": {
            "main": [
                [
                    {
                        "node": "Map Output",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Move to the correct folder1": {
            "main": [
                [
                    {
                        "node": "Gmail",
                        "type": "main",
                        "index": 0
                    },
                    {
                        "node": "Google Drive",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Only invoice mails with attachments": {
            "main": [
                [
                    {
                        "node": "Upload PDF to Drive1",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Gmail",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Gmail MCP Server
View
WordPress Contact Form (CF7) Responses and Classification
View
Discord AI bot
View
Splitout Filter Create Webhook
View
n8n Subworkflow Dependency Graph & Auto-Tagging
View
Send Discord message from Webflow form submission
View
GitHub Stickynote Update Triggered
View
Manual HTTP Update Webhook
View
Limit Code Create Webhook
View