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

Webhook Code Automate Webhook
View
Track an event in Segment
View
GoogleSheets Cron Create Scheduled
View
[2/3] Set up medoids (2 types) for anomaly detection (crops dataset)
View
Code Schedule Create Webhook
View
Schedule Removeduplicates Create Webhook
View
GoogleSheets Respondtowebhook Automate Webhook
View
Strapi Webhook Automate Webhook
View
Executecommand Functionitem Automate
View
Executeworkflow Summarize Send Triggered
View