Workflow: Code Schedule Automation

Workflow Details

Download Workflow
{
    "id": "VLRbAr4OrtnHUU2l",
    "name": "Todoist Weekly Review Template",
    "tags": [],
    "nodes": [
        {
            "id": "45351dbb-6c0c-4442-a350-35d966a26fa1",
            "name": "When clicking \u2018Test workflow\u2019",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                0,
                180
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "9644a07e-0b97-4b48-846c-821f620128cc",
            "name": "Get completed tasks via Todoist API",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                220,
                0
            ],
            "parameters": {
                "url": "https:\/\/api.todoist.com\/sync\/v9\/completed\/get_all",
                "method": "POST",
                "options": [],
                "sendBody": true,
                "authentication": "predefinedCredentialType",
                "bodyParameters": {
                    "parameters": [
                        {
                            "name": "since",
                            "value": "={{ $now.minus(7, 'days') }}"
                        },
                        {
                            "name": "until",
                            "value": "={{ $now }}"
                        }
                    ]
                },
                "nodeCredentialType": "todoistApi"
            },
            "credentials": {
                "todoistApi": []
            },
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "94f40824-43ff-45ae-adfd-b18a5903cba1",
            "name": "Optional: Ignore specific projects",
            "type": "n8n-nodes-base.code",
            "position": [
                440,
                0
            ],
            "parameters": {
                "jsCode": "\/\/ maintain this array with ignored Todoist project_id's\n\/\/ empty \"[]\" it when you don't want to ignore any\nconst ignoredProjects = ['2335544024'];\n\n\/\/ Remove ignored projects\nconst items = $input.all()[0].json.items;\nvar newItems = [];\nfor(j = 0; j < items.length; j++) {\n  if(!ignoredProjects.includes(items[j].project_id)) {\n    newItems.push(items[j]);\n  }\n}\n\nreturn newItems;"
            },
            "typeVersion": 2
        },
        {
            "id": "c50b00d6-4e9c-43e5-b6b8-ee0caac78c68",
            "name": "Format the email body",
            "type": "n8n-nodes-base.code",
            "position": [
                660,
                0
            ],
            "parameters": {
                "jsCode": "const items = $input.all();\n\n\/\/ Group items by day\nconst grouped = items.reduce((acc, item) => {\n  const date = new Date(item.json.completed_at).toISOString().split('T')[0];\n  acc[date] = acc[date] || [];\n  acc[date].push(item.json.content);\n  return acc;\n}, {});\n\n\/\/ Format the grouped data into an HTML string for the email\nlet emailBody = \"<h1>Completed Items<\/h1>\";\nfor (const [date, contents] of Object.entries(grouped)) {\n  emailBody += `<h2>${date}<\/h2><ul>`;\n  contents.forEach(content => {\n    emailBody += `<li>${content}<\/li>`;\n  });\n  emailBody += `<\/ul>`;\n}\n\nreturn [{ json: { emailBody } }];\n"
            },
            "typeVersion": 2
        },
        {
            "id": "42b38a9b-2dbc-46f5-895c-f8597eb48bf1",
            "name": "Every Friday afternoon",
            "type": "n8n-nodes-base.scheduleTrigger",
            "position": [
                0,
                0
            ],
            "parameters": {
                "rule": {
                    "interval": [
                        {
                            "field": "weeks",
                            "triggerAtDay": [
                                5
                            ],
                            "triggerAtHour": 15
                        }
                    ]
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "adece42d-d84a-41c8-8269-35ba08879e52",
            "name": "Send Email",
            "type": "n8n-nodes-base.emailSend",
            "position": [
                860,
                0
            ],
            "parameters": {
                "options": [],
                "subject": "Todoist Weekly Review",
                "emailFormat": "={{ $('Format the email body').item.json.emailBody }}"
            },
            "typeVersion": 2.100000000000000088817841970012523233890533447265625
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "fcf19ca1-c2bc-4832-8cfe-184424484f60",
    "connections": {
        "Format the email body": {
            "main": [
                [
                    {
                        "node": "Send Email",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Every Friday afternoon": {
            "main": [
                [
                    {
                        "node": "Get completed tasks via Todoist API",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "When clicking \u2018Test workflow\u2019": {
            "main": [
                [
                    {
                        "node": "Get completed tasks via Todoist API",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Optional: Ignore specific projects": {
            "main": [
                [
                    {
                        "node": "Format the email body",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get completed tasks via Todoist API": {
            "main": [
                [
                    {
                        "node": "Optional: Ignore specific projects",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

HubSpot Automate Triggered
View
[hiroshidigital.com] Send Message In Larksuite
View
Trello Limit Automate Scheduled
View
Splitout Limit Automate Webhook
View
Read RSS feed from two different sources
View
Line Save File to Google Drive and Log File's URL
View
Zendesk Asana Create Webhook
View
HTTP Stripe Create Webhook
View
Telegram Automate Triggered
View
HTTP Stickynote Create Webhook
View