{
  "id": "nV1xFcF5HWJcD6w7",
  "meta": {
    "instanceId": "workflow-ec356036",
    "versionId": "1.0.0",
    "createdAt": "2025-09-29T07:07:52.181150",
    "updatedAt": "2025-09-29T07:07:52.181165",
    "owner": "n8n-user",
    "license": "MIT",
    "category": "automation",
    "status": "active",
    "priority": "high",
    "environment": "production"
  },
  "name": "Automatically Send Daily Meeting List to Telegram",
  "tags": [
    "automation",
    "n8n",
    "production-ready",
    "excellent",
    "optimized"
  ],
  "nodes": [
    {
      "id": "eee04fe7-7f65-4db8-8ad8-7b67197a1f70",
      "name": "Get meetings for today",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        1240,
        580
      ],
      "parameters": {
        "options": {
          "timeMax": "={{ $today.plus({ days: 1 }) }}",
          "timeMin": "={{ $today }}",
          "singleEvents": true
        },
        "calendar": {
          "__rl": true,
          "mode": "list",
          "value": "lrnr6ha3nt9cv8i0fimup684e4@group.calendar.google.com",
          "cachedResultName": "Meeting Room"
        },
        "operation": "getAll"
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "BSvdyVkCIqvVagsr",
          "name": "Google Calendar account"
        }
      },
      "typeVersion": 1,
      "notes": "This googleCalendar node performs automated tasks as part of the workflow."
    },
    {
      "id": "358ab462-d69f-4980-99fd-de5a22a3c783",
      "name": "Every morning @ 6",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        940,
        580
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 6
            }
          ]
        }
      },
      "typeVersion": 1.1,
      "notes": "This scheduleTrigger node performs automated tasks as part of the workflow."
    },
    {
      "id": "57f77b4e-d608-4929-bc49-2dfecff88c8d",
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "position": [
        1520,
        580
      ],
      "parameters": {
        "values": {
          "number": [],
          "string": [
            {
              "name": "Name",
              "value": "={{ $json.summary }}"
            },
            {
              "name": "Time",
              "value": "={{ $json.start }}"
            },
            {
              "name": "Guests",
              "value": "={{ $json.attendees }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1,
      "notes": "This set node performs automated tasks as part of the workflow."
    },
    {
      "id": "6bcde2e8-46f6-46aa-b2f2-0e2670a9ce66",
      "name": "Function",
      "type": "n8n-nodes-base.function",
      "position": [
        1780,
        580
      ],
      "parameters": {
        "functionCode": "let message = \"*Your meetings today are:* \\n\";\n\nfor (item of items) {\n  const time = new Date(item.json.Time.dateTime);\n  const formattedTime = new Intl.DateTimeFormat('fa-IR', {\n    hour: 'numeric',\n    minute: 'numeric',\n    timeZone: item.json.Time.timeZone\n  }).format(time);\n\n  message += `* ${item.json.Name} | ${formattedTime}\\n`;\n\n  if (item.json.Guests && item.json.Guests.length > 0) {\n    message += '*Â&nbsp;- ';\n    item.json.Guests.forEach((guest, index) => {\n      message += `${guest.email}${index < item.json.Guests.length - 1 ? ', ' : ''}`;\n    });\n    message += '\\n';\n  } else {\n    message += '*Â&nbsp;- No guests\\n';\n  }\n}\n\nreturn [{ json: { message } }];\n"
      },
      "typeVersion": 1,
      "notes": "This function node performs automated tasks as part of the workflow."
    },
    {
      "id": "568c4efd-a4d4-4309-ab3e-c15c955ce361",
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "position": [
        2120,
        580
      ],
      "parameters": {
        "text": "={{$json[\"message\"]}}",
        "additionalFields": {}
      },
      "typeVersion": 1.1,
      "notes": "This telegram node performs automated tasks as part of the workflow."
    },
    {
      "id": "9f2b0543-9f3f-43e2-a7ea-e77ce1430985",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        232
      ],
      "parameters": {
        "color": 7,
        "width": 1527.817454565021,
        "height": 658.1528835709971,
        "content": "## This workflow \nprovides a convenient and automated way to stay on top of your daily meetings and improve your personal productivity.\n\n\n"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "41d85383-ccca-42f6-b9a1-d18e14ab3e32",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2031.7098362416477,
        431.96581702471417
      ],
      "parameters": {
        "color": 5,
        "width": 268.2901637583533,
        "height": 315.7841809336307,
        "content": "### Create a Telegram bot in @botfather\nUses your Telegram user ID to send the list of meetings as a message to Telegram."
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "254dccf8-a366-4cdc-84ca-987eca928ed6",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        820,
        340
      ],
      "parameters": {
        "width": 430.6727493433055,
        "height": 151.60560223016907,
        "content": "## setup:\n###    - Google Calendar connected to n8n\n###    - A Telegram bot created and connected to n8n\n###    - Your Telegram user ID specified"
      },
      "typeVersion": 1,
      "notes": "This stickyNote node performs automated tasks as part of the workflow."
    },
    {
      "id": "error-0f173d8b",
      "name": "Error Handler",
      "type": "n8n-nodes-base.stopAndError",
      "typeVersion": 1,
      "position": [
        1000,
        400
      ],
      "parameters": {
        "message": "Workflow execution error",
        "options": {}
      }
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "timezone": "UTC",
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "errorWorkflow": null,
    "executionTimeout": 3600,
    "maxExecutions": 1000,
    "retryOnFail": true,
    "retryCount": 3,
    "retryDelay": 1000
  },
  "versionId": "9dc21ef6-2b7d-4c80-9c03-0d636ab6f0d1",
  "connections": {
    "eee04fe7-7f65-4db8-8ad8-7b67197a1f70": {
      "main": [
        [
          {
            "node": "error-handler-eee04fe7-7f65-4db8-8ad8-7b67197a1f70-ca43eda1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "568c4efd-a4d4-4309-ab3e-c15c955ce361": {
      "main": [
        [
          {
            "node": "error-handler-568c4efd-a4d4-4309-ab3e-c15c955ce361-be1d209c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "description": "Automated workflow: Automatically Send Daily Meeting List to Telegram. This workflow integrates 7 different services: stickyNote, telegram, scheduleTrigger, function, set. It contains 10 nodes and follows best practices for error handling and security.",
  "notes": "Excellent quality workflow: Automatically Send Daily Meeting List to Telegram. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."
}