{
  "id": "eG9C5Xt8LTU1bp8i",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Task Deadline Reminder Workflow (Today / 3-Day / 7-Day)",
  "tags": [],
  "nodes": [
    {
      "id": "08768d18-2772-427a-974a-d30c58d1ef17",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1344,
        176
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U/edit#gid=0",
          "cachedResultName": "\u30b7\u30fc\u30c81"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14s5wt4rWj8pPn9kbpirrhX3wU2s5x8T_JEvj3uQlI1U/edit?usp=drivesdk",
          "cachedResultName": "todo"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "a6384770-85d5-44d9-922d-d8cbbd6ef1b1",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -976,
        176
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "52601fc4-d727-4fc2-9e0a-55ef26f15890",
      "name": "3\u65e5\u4ee5\u5185",
      "type": "n8n-nodes-base.if",
      "position": [
        -304,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) }}"
            },
            {
              "id": "09fa5b3f-c84c-4a61-ac16-03328eb00240",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) + 3*24*60*60*1000 }}"
            }
          ]
        },
        "looseTypeValidation": "="
      },
      "typeVersion": 2.2
    },
    {
      "id": "12de70d4-d78b-43a5-8f7e-bc5993156fe5",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1696,
        176
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d7dd5c40-dc43-43d4-8436-67795810d2af",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1760,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Schedule Trigger \nRuns the workflow every morning at the specified time so task deadlines are checked automatically without manual execution."
      },
      "typeVersion": 1
    },
    {
      "id": "8776e349-fc05-4267-a514-984938c61a2b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2784,
        -688
      ],
      "parameters": {
        "width": 992,
        "height": 1632,
        "content": "## Task Deadline Reminder Workflow (Today / 3-Day / 7-Day)\nTask deadline management manually is inefficient and leads to missed deadlines\u2014especially when teams rely on spreadsheets and individual reminders.  \nThis workflow automates the entire follow-up process by reading a centralized task sheet in Google Sheets every morning, checking the deadline for each task, and sending automatic email notifications to the responsible person based on urgency.  \nTasks due **today**, **within three days**, or **within one week** are identified and routed to customized Gmail notifications, ensuring that every team member is aware of upcoming deadlines without manual checking.\n\n## Who\u2019s it for\nThis workflow is ideal for teams and organizations that manage multiple tasks across departments and need a reliable way to stay on top of deadlines. It is especially useful for:\n\n- Project managers coordinating many deadlines  \n- Back-office teams monitoring routine operational tasks  \n- Organizations with distributed members  \n- Anyone who relies on spreadsheets but needs automated follow-up  \n\nBy integrating Google Sheets, n8n, and Gmail, you gain a proactive notification system that keeps everyone aligned and reduces the risk of forgotten tasks.\n\n## How it works\n### 1. Daily trigger  \nThe workflow runs every morning at 9:00 using a Schedule Trigger.\n\n### 2. Load task list from Google Sheets  \nThe workflow retrieves all rows from the designated spreadsheet, including task name, deadline, responsible person, and email address.\n\n### 3. Process tasks individually  \nA loop node evaluates each task one by one.\n\n### 4. Evaluate deadline conditions  \n- **Due today:** Deadline matches today\u2019s date  \n- **Due within 3 days:** Deadline falls between today and three days ahead  \n- **Due within 7 days:** Deadline falls between today and one week ahead  \n\n### 5. Send notifications  \nDepending on urgency:  \n- \u201c\u672c\u65e5\u304c\u7de0\u3081\u5207\u308a\u3067\u3059\u201d for tasks due today  \n- \u201c\u30bf\u30b9\u30af\u671f\u9650\u304c\u4e09\u65e5\u524d\u3068\u306a\u308a\u307e\u3057\u305f\u201d for tasks due within 3 days  \n- \u201c\u30bf\u30b9\u30af\u306e\u671f\u9650\u304c\u4e00\u9031\u9593\u4ee5\u5185\u3067\u3059\u201d for tasks due within 7 days  \n\nEach email is automatically sent to the responsible person based on the \u201c\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u201d field in the sheet.\n\n### 6. Complete processing  \nThe loop continues until all task rows have been checked.\n\n## How to set up\n- Import the workflow into your n8n instance  \n- Authenticate Google Sheets and select the task spreadsheet  \n- Authenticate Gmail as the sender account  \n- Confirm required columns: \u30bf\u30b9\u30af, \u671f\u9650, \u62c5\u5f53, \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9  \n- Adjust time, message text, or conditions based on your internal rules  \n\n## Requirements\n- Active n8n instance  \n- Google Sheets access with permission to read the task list  \n- Gmail OAuth connection for email sending  \n- Spreadsheet with at least: task name, deadline, responsible person, email address  \n\n## How to customize\nYou can expand and refine this workflow to match your company\u2019s processes:\n\n- Add Slack, Chatwork, or LINE notifications  \n- Add overdue task detection  \n- Add task priority sorting (High / Medium / Low)  \n- Log notifications back into the spreadsheet  \n- Send daily summary reports to managers  \n\nThis workflow provides a flexible foundation for building a complete automated task governance system.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "72348edd-acc7-4680-afa0-f146fc0cc26c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1440,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Fetch Tasks from Google Sheets\nLoads all task records from the Google Sheets task table, including task name, deadline, person in charge, and email address."
      },
      "typeVersion": 1
    },
    {
      "id": "a12c8197-4ca2-4dcc-8316-bbd025920234",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1104,
        0
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 352,
        "content": "## Loop Over Task Items\nIterates through each task row one by one so the workflow can evaluate deadlines individually."
      },
      "typeVersion": 1
    },
    {
      "id": "3e166602-8714-4e91-a9a4-fe992a6ce102",
      "name": "Check Due Today (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        -752,
        -240
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['\u671f\u9650'] }}",
              "rightValue": "={{ (new Date(Date.now() + 9*60*60*1000).toISOString().split(\"T\")[0]) }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "86f8b164-298c-4eae-bda9-845260819e1d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        -400
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 352,
        "content": "## Check Due Today (IF)\nChecks whether the task deadline matches today\u2019s date to identify tasks that are due today and require immediate notification."
      },
      "typeVersion": 1
    },
    {
      "id": "6ee54db5-53ae-4797-a2f9-5e2808789ae3",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -432
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 384,
        "content": "## Send Today Reminder (Gmail)\nSends an email to the responsible person informing them that their task is due today, including task details and assignee information."
      },
      "typeVersion": 1
    },
    {
      "id": "9df08c88-0741-4e23-9a71-d08f2a4c4e67",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -32
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Check Within 3 Days (IF)\nDetermines whether the task deadline falls within the next three days, allowing early reminders before the final due date."
      },
      "typeVersion": 1
    },
    {
      "id": "5300b4c9-d828-48bd-8bee-d9c1baa57a6b",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        16
      ],
      "parameters": {
        "color": 7,
        "height": 368,
        "content": "## Send 3-Day Reminder (Gmail)\nSends an email to notify the responsible person that the task deadline is approaching within three days."
      },
      "typeVersion": 1
    },
    {
      "id": "f4cd32ed-a34b-4145-a736-7ddba10671e3",
      "name": "Send 3-Day Reminder (Gmail)",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -80,
        208
      ],
      "parameters": {
        "sendTo": "={{ $json['\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9'] }}",
        "message": "={{ $json['\u30bf\u30b9\u30af'] }}\n{{ $json['\u671f\u9650'] }}\n{{ $json['\u62c5\u5f53'] }}",
        "options": {},
        "subject": "\u30bf\u30b9\u30af\u671f\u9650\u304c\u4e09\u65e5\u524d\u3068\u306a\u308a\u307e\u3057\u305f"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ab9f3b5f-596d-4b02-b4c4-deeda51c177e",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        112,
        176
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Check Within 7 Days (IF)\nChecks if the task deadline is within seven days from today to provide weekly reminder notifications."
      },
      "typeVersion": 1
    },
    {
      "id": "636a78d4-956c-4410-b83f-1b0f5ee7fe48",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        256
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Send 7-Day Reminder (Gmail)\nSends a weekly deadline reminder email to the assigned person for tasks that are due within the next seven days."
      },
      "typeVersion": 1
    },
    {
      "id": "a9fbc2c9-d40b-4ad5-8d1d-d53d55f5b6e6",
      "name": "Check Within 7 Days (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        176,
        368
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "37fa1520-e6e9-4d34-86f1-05c9b3eff19a",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) }}"
            },
            {
              "id": "18ac4d56-da04-4e69-b159-fa5448cab10b",
              "operator": {
                "type": "number",
                "operation": "lte"
              },
              "leftValue": "={{ new Date($json[\"\u671f\u9650\"]).getTime() }}",
              "rightValue": "={{ new Date().setHours(0,0,0,0) + 7*24*60*60*1000 }}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6d1d23a2-cc0c-4be9-bb48-e7807556e397",
      "name": "Send 7-Day Reminder",
      "type": "n8n-nodes-base.gmail",
      "position": [
        464,
        448
      ],
      "parameters": {
        "sendTo": "={{ $json['\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9'] }}",
        "message": "={{ $json['\u30bf\u30b9\u30af'] }} {{ $json['\u671f\u9650'] }} {{ $json['\u62c5\u5f53'] }}",
        "options": {},
        "subject": "\u30bf\u30b9\u30af\u306e\u671f\u9650\u304c\u4e00\u9031\u9593\u4ee5\u5185\u3067\u3059"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "31ae3f1b-641b-415d-9b88-3058021bc327",
  "connections": {
    "3\u65e5\u4ee5\u5185": {
      "main": [
        [
          {
            "node": "Send 3-Day Reminder (Gmail)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Check Within 7 Days (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Check Due Today (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send 7-Day Reminder": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Due Today (IF)": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3\u65e5\u4ee5\u5185",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Within 7 Days (IF)": {
      "main": [
        [
          {
            "node": "Send 7-Day Reminder",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send 3-Day Reminder (Gmail)": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}