{ "nodes": [ { "id": "trigger-43a50227", "name": "Manual Trigger", "type": "n8n-nodes-base.manualTrigger", "typeVersion": 1, "position": [ 100, 100 ], "parameters": {} }, { "name": "Read Harvey's Email", "type": "n8n-nodes-base.emailReadImap", "position": [ 270, 390 ], "parameters": { "options": {} }, "credentials": { "imap": "Read Harvey's Mail" }, "typeVersion": 1, "id": "200e7ae0-4868-4302-b92d-04e196f1290d", "notes": "This emailReadImap node performs automated tasks as part of the workflow." }, { "name": "Who Is The Email From?", "type": "n8n-nodes-base.switch", "position": [ 460, 390 ], "parameters": { "rules": { "rules": [ { "value2": "Louis Litt " } ] }, "value1": "={{$node[\"Read Harvey's Email\"].json[\"from\"]}}", "dataType": "string", "fallbackOutput": 3 }, "typeVersion": 1, "alwaysOutputData": false, "id": "399d6dcd-65d2-479e-92de-c5d7455c4169", "notes": "This switch node performs automated tasks as part of the workflow." }, { "name": "Read Excuses File", "type": "n8n-nodes-base.readBinaryFile", "position": [ 670, 230 ], "parameters": { "filePath": "/home/n8n/Excuse_Generator.xlsx" }, "typeVersion": 1, "id": "640523db-96df-4613-91e9-f660b1b3b5e6", "notes": "This readBinaryFile node performs automated tasks as part of the workflow." }, { "name": "Retrieve Excuses Spreadsheet Data", "type": "n8n-nodes-base.spreadsheetFile", "position": [ 860, 230 ], "parameters": { "options": {} }, "typeVersion": 1, "id": "c77a42c7-378f-421b-b9df-ad63e1125524", "notes": "This spreadsheetFile node performs automated tasks as part of the workflow." }, { "name": "Generate Excuse", "type": "n8n-nodes-base.function", "position": [ 1040, 230 ], "parameters": { "functionCode": "var leadinmax = 24;\nvar perpmax = 25;\nvar delaymax = 23;\nvar leadin = Math.floor((Math.random() * leadinmax ) + 1);\nvar perp = Math.floor((Math.random() * perpmax ) + 1);\nvar delay = Math.floor((Math.random() * delaymax) + 1);\n\nvar excuse = items[leadin].json.Leadin + \" \" + items[perp].json.Perpetrator + \" \" + items[delay].json.Delay;\n\nitems = [{json:{}}];\n\nitems[0].json.excuse = excuse;\nreturn items;\n" }, "typeVersion": 1, "id": "d1a8239d-29a1-4835-bfb5-a97c7ff892a4", "notes": "This function node performs automated tasks as part of the workflow." }, { "name": "Merge Excuse and Mail Data", "type": "n8n-nodes-base.merge", "position": [ 1230, 330 ], "parameters": { "mode": "mergeByIndex" }, "typeVersion": 1, "id": "6cf7d259-b94d-4d7a-9c5e-43f7ceaeea75", "notes": "This merge node performs automated tasks as part of the workflow." }, { "name": "Send Email", "type": "n8n-nodes-base.emailSend", "position": [ 1460, 250 ], "parameters": { "text": "= {{$node[\"Merge Excuse and Mail Data\"].json[\"excuse\"]}}\n\nMaybe next time.\n\nHarvey", "options": {}, "subject": "=RE: {{$node[\"Merge Excuse and Mail Data\"].json[\"subject\"]}}", "toEmail": "={{$node[\"Merge Excuse and Mail Data\"].json[\"from\"]}}", "fromEmail": "={{$node[\"Merge Excuse and Mail Data\"].json[\"to\"]}}" }, "credentials": { "smtp": "Send Harvey's Mail" }, "typeVersion": 1, "id": "bc8ad2df-83dc-4a37-a819-2894ab7a0969", "notes": "This emailSend node performs automated tasks as part of the workflow." }, { "name": "Slack (Louis)", "type": "n8n-nodes-base.slack", "position": [ 1470, 410 ], "parameters": { "text": "=Here is what Louis emailed you:\n```\n{{$node[\"Merge Excuse and Mail Data\"].json[\"textPlain\"]}}\n```\n\nHere is how \"you\" responded:\n> {{$node[\"Merge Excuse and Mail Data\"].json[\"excuse\"]}}\n\n:+1: *You're Welcome!* :smirk:", "channel": "private", "attachments": [], "otherOptions": { "mrkdwn": true } }, "credentials": { "slackApi": "Nathan's Slack API Token" }, "typeVersion": 1, "id": "7321887f-134b-47ce-b0b3-95d64cccb49f", "notes": "This slack node performs automated tasks as part of the workflow." }, { "name": "Slack (General)", "type": "n8n-nodes-base.slack", "position": [ 890, 470 ], "parameters": { "text": "You've just received an email. You may wish to check it out.", "channel": "private", "attachments": [], "otherOptions": { "mrkdwn": true } }, "credentials": { "slackApi": "Nathan's Slack API Token" }, "typeVersion": 1, "id": "c87ee22b-bf12-4f9a-9379-f9af68250e53", "notes": "This slack node performs automated tasks as part of the workflow." } ], "connections": { "200e7ae0-4868-4302-b92d-04e196f1290d": { "main": [ [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-14f3595e", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-82d101b3", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-42c6e6c5", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-dff54398", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-0c42669e", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-4d465691", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-a5a47251", "type": "main", "index": 0 } ], [ { "node": "error-handler-200e7ae0-4868-4302-b92d-04e196f1290d-24034604", "type": "main", "index": 0 } ] ] }, "bc8ad2df-83dc-4a37-a819-2894ab7a0969": { "main": [ [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-2a88e4bc", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-41f84928", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-18977fda", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-5d197e35", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-5467361d", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-bb9a0719", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-aac86ca6", "type": "main", "index": 0 } ], [ { "node": "error-handler-bc8ad2df-83dc-4a37-a819-2894ab7a0969-0c43c0d1", "type": "main", "index": 0 } ] ] } }, "name": "Emailreadimap Workflow", "description": "Automated workflow: Emailreadimap Workflow. This workflow processes data and performs automated tasks.", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "meta": { "instanceId": "workflow-422837aa", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:52.327239", "updatedAt": "2025-09-29T07:07:52.327244", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Emailreadimap Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }