Car Access Report Generator

    This n8n workflow acts as an automated assistant that creates and delivers a daily schedule reports. It runs 3 times a day to ensure the team always has the most up-to-date information for tomorrow. How it works Auto-Run: The n8n Schedule Trigger starts the process automatically three times throughout the day. Smart Pickup: It looks through your Google Sheets and pulls only the specific data needed for tomorrow's schedule based on the date. Auto-Formatting: The workflow automatically cleans up the data and fixes the row heights so the Excel file looks neat and professional. Instant Delivery: It converts the data into an Excel file and sends it out as an email attachment immediately.

    Shared 1/19/2026

    2 views

    Visual Workflow

    JSON Code

    {
      "id": "LpwJGfTVUh7py8nn",
      "meta": {
        "instanceId": "162eec3732de59437b64feac9b77d3c4c84098988ae869a1ee7e056d40699a32",
        "templateCredsSetupCompleted": true
      },
      "name": "Car Access Report Generation",
      "tags": [
        {
          "id": "X5BCFOxeieTgaYAc",
          "name": "James",
          "createdAt": "2025-12-29T03:39:06.049Z",
          "updatedAt": "2025-12-29T03:39:06.049Z"
        }
      ],
      "nodes": [
        {
          "id": "3ef6f018-742e-4e73-968f-dabfeb78ed0b",
          "name": "On form submission",
          "type": "n8n-nodes-base.formTrigger",
          "position": [
            32,
            -80
          ],
          "webhookId": "7a900410-55f6-4b7b-a59d-8e483b2bb9e4",
          "parameters": {
            "options": {},
            "formTitle": "Car Access Report Generation",
            "formFields": {
              "values": [
                {
                  "fieldName": "tmpStartDate",
                  "fieldType": "date",
                  "fieldLabel": "Start Date",
                  "requiredField": true
                },
                {
                  "fieldName": "tmpEndDate",
                  "fieldType": "date",
                  "fieldLabel": "End Date",
                  "requiredField": true
                }
              ]
            },
            "formDescription": "Car Access Report Generation"
          },
          "typeVersion": 2.4
        },
        {
          "id": "b31700b3-1c6e-42c5-9a0d-ac0e0e23c680",
          "name": "Aggregate",
          "type": "n8n-nodes-base.aggregate",
          "position": [
            3072,
            -304
          ],
          "parameters": {
            "options": {
              "includeBinaries": true
            },
            "aggregate": "aggregateAllItemData"
          },
          "typeVersion": 1
        },
        {
          "id": "781c1c00-3b86-4f8c-9f34-ffa6e6a5dd67",
          "name": "Edit Fields1",
          "type": "n8n-nodes-base.set",
          "position": [
            240,
            -80
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "ef136455-3157-45b9-a22d-133fce09c647",
                  "name": "=StartDate",
                  "type": "string",
                  "value": "={{ $json.tmpStartDate }}"
                },
                {
                  "id": "922cba4b-1755-4814-8a37-9fc9988a3f47",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $json.tmpEndDate }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "bc62a295-a0f3-4a1e-a06c-395ef81ed905",
          "name": "Define DateRange",
          "type": "n8n-nodes-base.set",
          "position": [
            496,
            -288
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "id-1",
                  "name": "recipientEmail",
                  "type": "string",
                  "value": ""
                },
                {
                  "id": "id-2",
                  "name": "excelSheetId",
                  "type": "string",
                  "value": ""
                },
                {
                  "id": "1bd907c2-83bf-4d9b-bfaa-aa3512abf764",
                  "name": "StartDate",
                  "type": "string",
                  "value": "={{ $json.StartDate }}"
                },
                {
                  "id": "d7045431-b191-4fc0-aad9-068342916701",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $json.EndDate }}"
                }
              ]
            },
            "includeOtherFields": true
          },
          "typeVersion": 3.4
        },
        {
          "id": "0d966fe4-c33b-4d09-ba53-737ecbdbe146",
          "name": "Find GID",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            688,
            -288
          ],
          "parameters": {
            "url": "=https://sheets.googleapis.com/v4/spreadsheets/{{ $('Define DateRange').item.json.excelSheetId }}?fields=sheets.properties",
            "options": {},
            "authentication": "predefinedCredentialType",
            "nodeCredentialType": "googleDriveOAuth2Api"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "hHIsmwm92QVZzX2j",
              "name": "Google Drive account"
            }
          },
          "typeVersion": 4.3
        },
        {
          "id": "29eeeabe-f932-478b-8280-6dbe8e7c7e31",
          "name": "Split sheets",
          "type": "n8n-nodes-base.splitOut",
          "position": [
            864,
            -288
          ],
          "parameters": {
            "options": {},
            "fieldToSplitOut": "sheets"
          },
          "typeVersion": 1
        },
        {
          "id": "1dcbf08f-1d01-47b4-b69b-6334885f4208",
          "name": "Filter sheets with range",
          "type": "n8n-nodes-base.filter",
          "notes": "Error- no Car Access Schedule found ",
          "position": [
            1040,
            -288
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 3,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "0c029302-1ade-4422-a5ff-d02b170a9c71",
                  "operator": {
                    "type": "dateTime",
                    "operation": "afterOrEquals"
                  },
                  "leftValue": "={{ DateTime.fromFormat($json.properties.title, \"dd/MM/yy\").toISODate() }}",
                  "rightValue": "={{ $('Define DateRange').item.json.StartDate }}"
                },
                {
                  "id": "97a3628c-cc00-4ad7-860b-883a7764899d",
                  "operator": {
                    "type": "dateTime",
                    "operation": "beforeOrEquals"
                  },
                  "leftValue": "={{ DateTime.fromFormat($json.properties.title, \"dd/MM/yy\").toISODate() }}",
                  "rightValue": "={{ $('Define DateRange').item.json.EndDate }}"
                }
              ]
            }
          },
          "notesInFlow": false,
          "typeVersion": 2.3,
          "alwaysOutputData": true
        },
        {
          "id": "276f6cee-98fa-4279-a58a-1895af67b9bd",
          "name": "Check Filter",
          "type": "n8n-nodes-base.if",
          "position": [
            1216,
            -288
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 3,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "d169966b-5d95-46c7-ae09-901f9a5d9866",
                  "operator": {
                    "type": "boolean",
                    "operation": "true",
                    "singleValue": true
                  },
                  "leftValue": "={{ $json.length === 0 || Object.keys($json).length === 0 }}",
                  "rightValue": "found"
                }
              ]
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "58e6addc-cdec-4441-af14-f2cab3995205",
          "name": "check >1 pdf",
          "type": "n8n-nodes-base.if",
          "position": [
            2864,
            -288
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 3,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "39318b1c-4ffa-46ff-a4ff-7be0acc5f1cc",
                  "operator": {
                    "type": "number",
                    "operation": "gt"
                  },
                  "leftValue": "={{ $input.all().length }}",
                  "rightValue": 1
                }
              ]
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "584ada0a-90b4-4e34-8558-b1c1cb251ad0",
          "name": "Send email with 1 day",
          "type": "n8n-nodes-base.gmail",
          "position": [
            3072,
            -96
          ],
          "webhookId": "4cbc84fd-17a9-4593-99f6-a25f6e0e36ba",
          "parameters": {
            "sendTo": "={{ $('Define DateRange').first().json.recipientEmail }}",
            "message": "=",
            "options": {
              "attachmentsUi": {
                "attachmentsBinary": [
                  {}
                ]
              },
              "appendAttribution": false
            },
            "subject": "={{ $json.sheetName.split('/').slice(0, 2).join('/') }} Car Access Schedule",
            "emailType": "text"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "dJo9eZG5DYh8NPRm",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "97eb65c7-a1d2-4541-b475-ff9971434b80",
          "name": "Send email with many days",
          "type": "n8n-nodes-base.gmail",
          "position": [
            3264,
            -304
          ],
          "webhookId": "4cbc84fd-17a9-4593-99f6-a25f6e0e36ba",
          "parameters": {
            "sendTo": "={{ $('Define DateRange').first().json.recipientEmail }}",
            "message": "=",
            "options": {
              "attachmentsUi": {
                "attachmentsBinary": [
                  {
                    "property": "={{ Object.keys($binary).join(',') }}"
                  }
                ]
              },
              "appendAttribution": false
            },
            "subject": "=",
            "emailType": "text"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "dJo9eZG5DYh8NPRm",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 2.2
        },
        {
          "id": "6f817005-646d-4782-96ac-5b92e619fefd",
          "name": "Download Excel Request",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2496,
            -288
          ],
          "parameters": {
            "url": "=https://docs.google.com/spreadsheets/d/{{ $('Define DateRange').first().json.excelSheetId }}/export?format=xlsx&gid={{ $json.sheetId }}",
            "options": {
              "response": {
                "response": {
                  "responseFormat": "file"
                }
              }
            },
            "authentication": "predefinedCredentialType",
            "nodeCredentialType": "googleDriveOAuth2Api"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "hHIsmwm92QVZzX2j",
              "name": "Google Drive account"
            }
          },
          "typeVersion": 4.3
        },
        {
          "id": "d7902b24-4fbd-440b-8700-d7f88c1ebf82",
          "name": "Rename attachment",
          "type": "n8n-nodes-base.code",
          "position": [
            2688,
            -288
          ],
          "parameters": {
            "jsCode": "// 1. Get all items from the Filter node to have a list of titles\nconst allFilterItems = $(\"Filter sheets with range\").all();\n\n// 2. n8n processes items one by one. This loop handles each PDF.\nfor (let i = 0; i < $input.all().length; i++) {\n  const item = $input.all()[i];\n  \n  // 3. Get the correct title based on the current item index\n  // (e.g., the 1st PDF gets the 1st Title from the filter)\n  const titleFromFilter = allFilterItems[i].json.properties.title;\n\n  if (titleFromFilter && item.binary && item.binary.data) {\n    // 4. Create the new name (e.g., \"13/12/25\" -> \"13_12_25\")\n    const cleanDate = titleFromFilter.toString().replaceAll('/', '_');\n    const newFileName = `Car Access - ${cleanDate}.xlsx`;\n\n    // 5. Overwrite the \"25.pdf\" name with our new name\n    item.binary.data.fileName = newFileName;\n  }\n}\n\nreturn $input.all();"
          },
          "typeVersion": 2
        },
        {
          "id": "323ec5ef-91b2-4c5a-aca9-554777329e00",
          "name": "Check max linebreaks",
          "type": "n8n-nodes-base.code",
          "position": [
            1792,
            -288
          ],
          "parameters": {
            "jsCode": "// Get all items from the previous node\nconst allItems = $input.all();\n\nconst PIXELS_PER_LINE = 18; // Standard Google/Excel row height\nconst MIN_HEIGHT = 21;\n\n// Process each row\nconst results = allItems.map((item, index) => {\n  let maxLinesInRow = 1;\n\n  // Check every column/property in this specific row\n  for (const key in item.json) {\n    const value = item.json[key];\n    \n    // Only check if the value is a string\n    if (typeof value === 'string') {\n      // Count line breaks by splitting by newline character \\n\n      const lineCount = value.split('\\n').length;\n      if (lineCount > maxLinesInRow) {\n        maxLinesInRow = lineCount;\n      }\n    }\n  }\n\n  return {\n    json: {\n      // Direct mapping from your input format\n      sourceSheetId: item.json.source_SheetId,\n      rowInSheetIndex: item.json.row_number,\n      \n      // Keep your existing calculation logic\n      pixelSize: Math.max(MIN_HEIGHT, maxLinesInRow * PIXELS_PER_LINE),\n      maxLinesFound: maxLinesInRow,\n      \n      // Optional: If you want to keep the original columns (LG1, LG2, etc.) \n      // uncomment the line below:\n      // ...item.json \n    }\n  };\n});\n\nreturn results;\n"
          },
          "typeVersion": 2
        },
        {
          "id": "ff1940aa-9c01-4470-bcad-7a939aadac75",
          "name": "Set row height based on max linebreaks",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            2128,
            -288
          ],
          "parameters": {
            "url": "=https://sheets.googleapis.com/v4/spreadsheets/{{ $('Define DateRange').item.json.excelSheetId }}:batchUpdate",
            "body": "={{\nJSON.stringify({\n  \"requests\": $input.all().map(item => ({\n    \"updateDimensionProperties\": {\n      \"range\": {\n        \"sheetId\": item.json.sourceSheetId,\n        \"dimension\": \"ROWS\",\n        \"startIndex\": item.json.rowInSheetIndex - 1, // Subtract 1 if rowInSheetIndex 1 = Row 1\n        \"endIndex\": item.json.rowInSheetIndex\n      },\n      \"properties\": {\n        \"pixelSize\": item.json.pixelSize\n      },\n      \"fields\": \"pixelSize\"\n    }\n  }))\n})\n}}\n",
            "method": "POST",
            "options": {},
            "sendBody": true,
            "contentType": "raw",
            "authentication": "predefinedCredentialType",
            "rawContentType": "application/json",
            "nodeCredentialType": "googleDriveOAuth2Api"
          },
          "credentials": {
            "googleDriveOAuth2Api": {
              "id": "1ycq7GJDCbuEoeJs",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 4.3
        },
        {
          "id": "6319fb6b-825c-442b-8442-75086312a480",
          "name": "Get row(s) in sheet",
          "type": "n8n-nodes-base.googleSheets",
          "position": [
            1616,
            -64
          ],
          "parameters": {
            "options": {},
            "sheetName": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $('Check Filter').item.json.properties.sheetId }}"
            },
            "documentId": {
              "__rl": true,
              "mode": "id",
              "value": "={{ $('Define DateRange').item.json.excelSheetId }}"
            }
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "CTySR2lDcMeRXD48",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 4.7
        },
        {
          "id": "c7a530a3-0907-4d7c-8e18-324d8db20670",
          "name": "Mon-Thur, pm",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            32,
            -288
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "weeks",
                  "triggerAtDay": [
                    1,
                    2,
                    3,
                    4
                  ],
                  "triggerAtHour": 15
                },
                {
                  "field": "weeks",
                  "triggerAtDay": [
                    1,
                    2,
                    3,
                    4
                  ],
                  "triggerAtHour": 20
                }
              ]
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "f622b019-a964-4557-9963-dd9968c89d41",
          "name": "Fri, pm",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            32,
            -672
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "weeks",
                  "triggerAtDay": [
                    5
                  ],
                  "triggerAtHour": 15
                },
                {
                  "field": "weeks",
                  "triggerAtDay": [
                    5
                  ],
                  "triggerAtHour": 20
                }
              ]
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "1e991ff6-aab1-4fd3-a474-a980ce7ee966",
          "name": "Mon-Fri, am",
          "type": "n8n-nodes-base.scheduleTrigger",
          "position": [
            32,
            -480
          ],
          "parameters": {
            "rule": {
              "interval": [
                {
                  "field": "weeks",
                  "triggerAtDay": [
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "triggerAtHour": 8,
                  "triggerAtMinute": 15
                }
              ]
            }
          },
          "typeVersion": 1.3
        },
        {
          "id": "4225b545-f16b-41c6-b1db-cbeb9516e84c",
          "name": "today-today",
          "type": "n8n-nodes-base.set",
          "position": [
            240,
            -480
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "ef136455-3157-45b9-a22d-133fce09c647",
                  "name": "=StartDate",
                  "type": "string",
                  "value": "={{ $today.toFormat('yyyy-MM-dd') }}"
                },
                {
                  "id": "922cba4b-1755-4814-8a37-9fc9988a3f47",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $today.toFormat('yyyy-MM-dd') }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "bd96395a-6b1e-48e2-ac99-c58fe6812fbb",
          "name": "tmr-Mon",
          "type": "n8n-nodes-base.set",
          "position": [
            240,
            -672
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "ef136455-3157-45b9-a22d-133fce09c647",
                  "name": "=StartDate",
                  "type": "string",
                  "value": "={{ $today.plus({ days: 1 }).toFormat('yyyy-MM-dd') }}"
                },
                {
                  "id": "922cba4b-1755-4814-8a37-9fc9988a3f47",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $today.plus({ days: 3 }).toFormat('yyyy-MM-dd') }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "c37356fa-abfb-491b-9e38-c0cd0b4df37d",
          "name": "tmr-tmr",
          "type": "n8n-nodes-base.set",
          "position": [
            240,
            -288
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "ef136455-3157-45b9-a22d-133fce09c647",
                  "name": "=StartDate",
                  "type": "string",
                  "value": "={{ $today.plus({ days: 1 }).toFormat('yyyy-MM-dd') }}"
                },
                {
                  "id": "922cba4b-1755-4814-8a37-9fc9988a3f47",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $today.plus({ days: 1 }).toFormat('yyyy-MM-dd') }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "fad63e5f-c178-43c4-80ed-8824adcc5029",
          "name": "Get Filter sheets Count",
          "type": "n8n-nodes-base.code",
          "position": [
            2320,
            -288
          ],
          "parameters": {
            "jsCode": "// Retrieve all items from the specific node by name\nconst items = $(\"Filter sheets with range\").all();\n\n// Map them into the standard n8n output format\nreturn items.map(item => {\n  return {\n    json: {\n      sheetId: item.json.properties.sheetId,\n      // You can add other fields here if needed\n      sheetName: item.json.properties.title \n    }\n  };\n});\n"
          },
          "typeVersion": 2
        },
        {
          "id": "4d5de0fe-3d0f-46d0-9da6-f0504752d098",
          "name": "Filter useless pixelSize",
          "type": "n8n-nodes-base.filter",
          "position": [
            1952,
            -288
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 3,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "and",
              "conditions": [
                {
                  "id": "2e62e224-d306-47a8-9664-3d9468f4b54e",
                  "operator": {
                    "type": "number",
                    "operation": "gte"
                  },
                  "leftValue": "={{ $json.pixelSize }}",
                  "rightValue": 30
                }
              ]
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "8893cb69-d802-44dd-a3b8-af055d65af5a",
          "name": "Add source_SheetId",
          "type": "n8n-nodes-base.set",
          "position": [
            1616,
            -288
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "9665afe4-ab92-49fa-89bc-5249541e7e1d",
                  "name": "source_SheetId",
                  "type": "string",
                  "value": "={{ $(\"Filter sheets with range\").item.json.properties.sheetId }}"
                },
                {
                  "id": "96609d3b-6e0f-4bb9-8f6a-394517486ed8",
                  "name": "row_number",
                  "type": "number",
                  "value": "={{ $json.row_number }}"
                },
                {
                  "id": "2245af5d-e48b-4ab6-a072-0042955ee85d",
                  "name": "col_2",
                  "type": "string",
                  "value": "={{ $json.col_2 }}"
                },
                {
                  "id": "25112010-56be-4143-91cd-25c00c575bdf",
                  "name": "col_3",
                  "type": "string",
                  "value": "={{ $json.col_3 }}"
                },
                {
                  "id": "7476f5b7-42bf-4964-96a8-79d09cf65e07",
                  "name": "col_4",
                  "type": "string",
                  "value": "={{ $json.col_4 }}"
                }
              ]
            }
          },
          "typeVersion": 3.4
        },
        {
          "id": "c3423968-fe17-4676-8dca-29334d8bbb23",
          "name": "Loop Over Items",
          "type": "n8n-nodes-base.splitInBatches",
          "position": [
            1424,
            -208
          ],
          "parameters": {
            "options": {}
          },
          "typeVersion": 3
        },
        {
          "id": "4be3f3fc-f54a-45ac-ada1-0c8934636140",
          "name": "Replace Me",
          "type": "n8n-nodes-base.noOp",
          "position": [
            1792,
            -64
          ],
          "parameters": {},
          "typeVersion": 1
        },
        {
          "id": "de429901-001a-423f-a4e5-a1f971ffb7b1",
          "name": "Filter",
          "type": "n8n-nodes-base.filter",
          "position": [
            1040,
            -480
          ],
          "parameters": {
            "options": {},
            "conditions": {
              "options": {
                "version": 3,
                "leftValue": "",
                "caseSensitive": true,
                "typeValidation": "strict"
              },
              "combinator": "or",
              "conditions": [
                {
                  "id": "3ae7c9bb-3cc6-455d-9ed0-23ee16570865",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.properties.title }}",
                  "rightValue": "={{ $today.minus({days: 1}).toFormat('dd/MM/yy') }}"
                },
                {
                  "id": "96780c21-a80e-4b39-9311-8bc6cf2e9335",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.properties.title }}",
                  "rightValue": "={{ $today.minus({days: 2}).toFormat('dd/MM/yy') }}"
                },
                {
                  "id": "fa680423-0be7-4174-8773-4f5177ab5e8b",
                  "operator": {
                    "type": "string",
                    "operation": "equals"
                  },
                  "leftValue": "={{ $json.properties.title }}",
                  "rightValue": "={{ $today.minus({days: 3}).toFormat('dd/MM/yy') }}"
                }
              ]
            }
          },
          "typeVersion": 2.3
        },
        {
          "id": "7ede27ed-1aa2-4fbc-b135-efb36e651dcd",
          "name": "Hide outdated sheet",
          "type": "n8n-nodes-base.httpRequest",
          "position": [
            1216,
            -480
          ],
          "parameters": {
            "url": "=https://sheets.googleapis.com/v4/spreadsheets/{{ $('Define DateRange').item.json.excelSheetId.trim() }}:batchUpdate",
            "method": "POST",
            "options": {},
            "jsonBody": "={\n  \"requests\": [\n    {\n      \"updateSheetProperties\": {\n        \"properties\": {\n          \"sheetId\": {{ $json.properties.sheetId }},\n          \"hidden\": true\n        },\n        \"fields\": \"hidden\"\n      }\n    }\n  ]\n}\n",
            "sendBody": true,
            "specifyBody": "json",
            "authentication": "predefinedCredentialType",
            "nodeCredentialType": "googleSheetsOAuth2Api"
          },
          "credentials": {
            "googleSheetsOAuth2Api": {
              "id": "CTySR2lDcMeRXD48",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 4.3
        },
        {
          "id": "ea1080fa-0a63-4323-bb31-86123d863852",
          "name": "All Emails",
          "type": "n8n-nodes-base.set",
          "position": [
            496,
            -32
          ],
          "parameters": {
            "options": {},
            "assignments": {
              "assignments": [
                {
                  "id": "id-1",
                  "name": "recipientEmail",
                  "type": "string",
                  "value": ""
                },
                {
                  "id": "id-2",
                  "name": "excelSheetId",
                  "type": "string",
                  "value": "1rlYiIBD5gymXyzQR5lEC-gvtzXH0NE9ld9BS_yQifxk"
                },
                {
                  "id": "1bd907c2-83bf-4d9b-bfaa-aa3512abf764",
                  "name": "StartDate",
                  "type": "string",
                  "value": "={{ $json.StartDate }}"
                },
                {
                  "id": "d7045431-b191-4fc0-aad9-068342916701",
                  "name": "EndDate",
                  "type": "string",
                  "value": "={{ $json.EndDate }}"
                }
              ]
            },
            "includeOtherFields": true
          },
          "typeVersion": 3.4
        },
        {
          "id": "bffb447d-64bd-482a-b22c-01bb981a1251",
          "name": "Send Warning, no Schedule found",
          "type": "n8n-nodes-base.gmail",
          "position": [
            1424,
            -416
          ],
          "webhookId": "4cbc84fd-17a9-4593-99f6-a25f6e0e36ba",
          "parameters": {
            "sendTo": "={{ $('Define DateRange').item.json.recipientEmail }}",
            "message": "=no Car Access Schedule found ({{ $('Define DateRange').item.json.StartDate.split('-').reverse().slice(0, 2).join('/') }}-{{ $('Define DateRange').item.json.EndDate.split('-').reverse().slice(0, 2).join('/') }})",
            "options": {
              "appendAttribution": false
            },
            "subject": "=no Car Access Schedule found ({{ $('Define DateRange').item.json.StartDate.split('-').reverse().slice(0, 2).join('/') }}-{{ $('Define DateRange').item.json.EndDate.split('-').reverse().slice(0, 2).join('/') }})",
            "emailType": "text"
          },
          "credentials": {
            "gmailOAuth2": {
              "id": "dJo9eZG5DYh8NPRm",
              "name": "jamesloworkingpc"
            }
          },
          "typeVersion": 2.2
        }
      ],
      "active": true,
      "pinData": {},
      "settings": {
        "availableInMCP": false,
        "executionOrder": "v1"
      },
      "versionId": "edbef68a-6296-4418-adfe-11a7029a2af7",
      "connections": {
        "Filter": {
          "main": [
            [
              {
                "node": "Hide outdated sheet",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Fri, pm": {
          "main": [
            [
              {
                "node": "tmr-Mon",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "tmr-Mon": {
          "main": [
            [
              {
                "node": "Define DateRange",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "tmr-tmr": {
          "main": [
            [
              {
                "node": "Define DateRange",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Find GID": {
          "main": [
            [
              {
                "node": "Split sheets",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Aggregate": {
          "main": [
            [
              {
                "node": "Send email with many days",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Replace Me": {
          "main": [
            [
              {
                "node": "Loop Over Items",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Mon-Fri, am": {
          "main": [
            [
              {
                "node": "today-today",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "today-today": {
          "main": [
            [
              {
                "node": "Define DateRange",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check Filter": {
          "main": [
            [
              {
                "node": "Send Warning, no Schedule found",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Loop Over Items",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Edit Fields1": {
          "main": [
            [
              {
                "node": "Define DateRange",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Mon-Thur, pm": {
          "main": [
            [
              {
                "node": "tmr-tmr",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Split sheets": {
          "main": [
            [
              {
                "node": "Filter sheets with range",
                "type": "main",
                "index": 0
              },
              {
                "node": "Filter",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "check >1 pdf": {
          "main": [
            [
              {
                "node": "Aggregate",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Send email with 1 day",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Loop Over Items": {
          "main": [
            [
              {
                "node": "Add source_SheetId",
                "type": "main",
                "index": 0
              }
            ],
            [
              {
                "node": "Get row(s) in sheet",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Define DateRange": {
          "main": [
            [
              {
                "node": "Find GID",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Rename attachment": {
          "main": [
            [
              {
                "node": "check >1 pdf",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Add source_SheetId": {
          "main": [
            [
              {
                "node": "Check max linebreaks",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "On form submission": {
          "main": [
            [
              {
                "node": "Edit Fields1",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get row(s) in sheet": {
          "main": [
            [
              {
                "node": "Replace Me",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Check max linebreaks": {
          "main": [
            [
              {
                "node": "Filter useless pixelSize",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Download Excel Request": {
          "main": [
            [
              {
                "node": "Rename attachment",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Get Filter sheets Count": {
          "main": [
            [
              {
                "node": "Download Excel Request",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter sheets with range": {
          "main": [
            [
              {
                "node": "Check Filter",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Filter useless pixelSize": {
          "main": [
            [
              {
                "node": "Set row height based on max linebreaks",
                "type": "main",
                "index": 0
              }
            ]
          ]
        },
        "Set row height based on max linebreaks": {
          "main": [
            [
              {
                "node": "Get Filter sheets Count",
                "type": "main",
                "index": 0
              }
            ]
          ]
        }
      }
    }