{
  "name": "Track Excel 365 changes and approvals with Telegram and Google Sheets logging",
  "nodes": [
    {
      "id": "5b8a06be-2ef3-437c-8003-826d8e868c58",
      "name": "Get rows",
      "type": "n8n-nodes-base.microsoftExcel",
      "position": [
        112,
        128
      ]
    },
    {
      "id": "c2076d05-31dd-49b0-8016-4c99ab7a2fed",
      "name": "Normalize Data",
      "type": "n8n-nodes-base.code",
      "position": [
        320,
        128
      ]
    },
    {
      "id": "d8329b72-1d5c-43d8-8b71-8512f306cb9a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        48
      ],
      "parameters": {
        "width": 1024,
        "height": 272,
        "content": "## Step 1 "
      }
    },
    {
      "id": "ab56b1b5-ddba-4ea3-8c52-139a87f18974",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        384
      ],
      "parameters": {
        "width": 704,
        "height": 352,
        "content": "## Step 2 "
      }
    },
    {
      "id": "8b277663-15b3-421e-bab9-effd20cfb42b",
      "name": "Append Log to Excel",
      "type": "n8n-nodes-base.microsoftExcel",
      "position": [
        384,
        832
      ]
    },
    {
      "id": "0f3f7587-3db5-4bf8-a1a9-6999b69b4f28",
      "name": "Append Log to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        384,
        992
      ]
    },
    {
      "id": "f5ed1189-72e8-4c7b-a2d7-27ff4c215b89",
      "name": "Environment Config",
      "type": "n8n-nodes-base.code",
      "position": [
        512,
        128
      ]
    },
    {
      "id": "ad209afb-740f-47ad-8e76-a08e0e1e1e73",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        800
      ],
      "parameters": {
        "width": 704,
        "height": 368,
        "content": "## Step 4 – Audit Log"
      }
    },
    {
      "id": "c0955ae1-fa4d-4e29-a0eb-1e52806b9e72",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        -592
      ],
      "parameters": {
        "width": 832,
        "height": 3552,
        "content": "# Track changes and approvals in Excel 365\n\n## 📌 Overview\n\nThis workflow monitors an Excel 365 sheet every minute and detects new, updated, and deleted rows using a unique ID column. It compares the c"
      }
    },
    {
      "id": "6d5867c7-9ce0-493d-af68-d4b921f04c39",
      "name": "Notification Approval",
      "type": "n8n-nodes-base.telegram",
      "position": [
        864,
        544
      ]
    },
    {
      "id": "bb0e40aa-f1cb-4d05-a858-fc3431e77f66",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        464
      ],
      "parameters": {
        "width": 496,
        "height": 272,
        "content": " ## Step 3 Approval\n"
      }
    },
    {
      "id": "d02a76ce-a5ca-4a3d-bae4-eb1909316a4a",
      "name": "Run every 1 minute",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -96,
        128
      ]
    },
    {
      "id": "36fa3e89-7789-4562-9c1a-abf13e222da6",
      "name": "Check if changes exist",
      "type": "n8n-nodes-base.if",
      "position": [
        -96,
        560
      ]
    },
    {
      "id": "97834431-1892-4201-9fef-3807fb020835",
      "name": "Check if audit logging is enabled",
      "type": "n8n-nodes-base.switch",
      "position": [
        -96,
        896
      ]
    },
    {
      "id": "949e7846-c8a3-46fd-9ed0-f459ec5c6398",
      "name": "Compare previous and current snapshot",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        128
      ]
    },
    {
      "id": "c78ddfa5-c614-4f68-bb49-ce4f9d57b6bd",
      "name": "Transform changes for notification",
      "type": "n8n-nodes-base.code",
      "position": [
        176,
        432
      ]
    },
    {
      "id": "c467f737-037f-4e4b-9a07-7b7e31244b52",
      "name": "Build audit log rows",
      "type": "n8n-nodes-base.code",
      "position": [
        144,
        896
      ]
    },
    {
      "id": "4ccfc3ae-f8de-4eb2-afd1-d46b52a6d2a2",
      "name": "Filter rows with waiting approval",
      "type": "n8n-nodes-base.code",
      "position": [
        672,
        544
      ]
    },
    {
      "id": "28a56211-bfc7-49bc-b431-a4bb0fab7e30",
      "name": "Send notification",
      "type": "n8n-nodes-base.telegram",
      "position": [
        384,
        432
      ]
    },
    {
      "id": "c8c5eb0f-d58a-47c6-898f-fe462713a0be",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -592
      ],
      "parameters": {
        "width": 576,
        "height": 384,
        "content": "## How it works\n1. Runs every minute using a schedule trigger\n2. Reads rows from Excel 365\n3. Normalizes and stores a snapshot\n4. Compares with the previous state\n5. Detects new, updated, and deleted "
      }
    },
    {
      "id": "f7606576-0cec-4113-90e0-6c76c259d904",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -176
      ],
      "parameters": {
        "width": 560,
        "height": 288,
        "content": "## Setup steps\n1. Configure Microsoft Excel credentials\n2. Ensure your sheet contains a unique ID column\n3. Update the Environment Config node\n4.(Optional) Configure Google Sheets credentials for audi"
      }
    }
  ],
  "connections": {
    "Get rows": {
      "main": [
        [
          {
            "node": "Normalize Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Data": {
      "main": [
        [
          {
            "node": "Environment Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send notification": {
      "main": [
        []
      ]
    },
    "Environment Config": {
      "main": [
        [
          {
            "node": "Compare previous and current snapshot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run every 1 minute": {
      "main": [
        [
          {
            "node": "Get rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Build audit log rows": {
      "main": [
        [
          {
            "node": "Append Log to Excel",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append Log to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if changes exist": {
      "main": [
        [
          {
            "node": "Transform changes for notification",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check if audit logging is enabled",
            "type": "main",
            "index": 0
          },
          {
            "node": "Filter rows with waiting approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if audit logging is enabled": {
      "main": [
        [
          {
            "node": "Build audit log rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter rows with waiting approval": {
      "main": [
        [
          {
            "node": "Notification Approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transform changes for notification": {
      "main": [
        [
          {
            "node": "Send notification",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Compare previous and current snapshot": {
      "main": [
        [
          {
            "node": "Check if changes exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}