Webhook 統合による Google Tasks を Google Calendar イベントに変換する
上級
これはPersonal Productivity, Multimodal AI分野の自動化ワークフローで、16個のノードを含みます。主にIf, Set, Webhook, DateTime, GoogleTasksなどのノードを使用。 Webhook 統合を介して Google タスクを Google カレンダー イベントに変換
前提条件
- •HTTP Webhookエンドポイント(n8nが自動生成)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "6d95cfcfdb5941832863c02ceb9fcbd0e7cde6400b76244f830811247606f9a4",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "e617195e-a1e2-4bb4-95b9-c7751ee8782c",
"name": "テンプレートノート",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
0
],
"parameters": {
"color": 5,
"width": 528,
"height": 288,
"content": "## What this template does\nCreate Google Calendar events from incoming task payloads.\n\n## How to set up\n1) Select Google credentials in Tasks & Calendar nodes.\n2) Configure `tasklistId` and `calendarId` in **Configuration**.\n3) POST `{ TaskName, DueDateTimeSeconds }` to the Webhook.\n4) Test, then activate.\n"
},
"typeVersion": 1
},
{
"id": "8baf3bc2-affd-4427-ad8f-0a8eef5995e9",
"name": "設定",
"type": "n8n-nodes-base.set",
"position": [
320,
480
],
"parameters": {
"values": {
"number": [
{
"name": "defaultMinutes",
"value": 30
},
{
"name": "eventColor",
"value": 8
}
],
"string": [
{
"name": "calendarId",
"value": "primary"
},
{
"name": "tasklistId",
"value": "REPLACE_WITH_TASKLIST_ID"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "6d90eb2d-3275-4525-b5d7-f7e761417683",
"name": "Google Tasks",
"type": "n8n-nodes-base.googleTasks",
"position": [
544,
480
],
"parameters": {
"task": "={{ $('Configuration').item.json.tasklistId }}",
"operation": "getAll",
"additionalFields": {
"showCompleted": false
}
},
"credentials": {
"googleTasksOAuth2Api": {
"id": "r2Y8GsrO4PklYdVd",
"name": "Google Tasks account"
}
},
"typeVersion": 1
},
{
"id": "668b1608-7a1b-4ac2-8570-fcbf8278cfaa",
"name": "日付と時刻",
"type": "n8n-nodes-base.dateTime",
"position": [
752,
480
],
"parameters": {
"date": "={{ $('Webhook').item.json.body.DueDateTimeSeconds.toDateTime(\"s\") }}",
"format": "custom",
"options": {},
"operation": "formatDate",
"customFormat": "=yyyy-MM-dd HH:mm:ss"
},
"typeVersion": 2
},
{
"id": "0be0e8d0-b369-47e4-9419-90b3def746ad",
"name": "Google Calendar",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1392,
560
],
"parameters": {
"end": "={{ $('Date & Time').item.json.formattedDate.toDateTime().plus($('Configuration').item.json.defaultMinutes, 'minutes').format(\"yyyy-MM-dd HH:mm:ss\") }}",
"start": "={{ $('Date & Time').item.json.formattedDate }}",
"calendar": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.calendarId }}"
},
"additionalFields": {
"color": "={{ $('Configuration').item.json.eventColor }}",
"summary": "={{ $('Google Tasks').item.json.title }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "20g8lCLkphJifaBd",
"name": "Google Calendar account"
}
},
"typeVersion": 1.1
},
{
"id": "530619d8-52f2-4bb6-9fed-4068e686127a",
"name": "Google Tasks1",
"type": "n8n-nodes-base.googleTasks",
"position": [
1616,
560
],
"parameters": {
"task": "MTQ4MDk5NDE1Mjc2NjA5MTA5MjE6MDow",
"taskId": "={{ $('Google Tasks').item.json.id }}",
"operation": "delete"
},
"credentials": {
"googleTasksOAuth2Api": {
"id": "r2Y8GsrO4PklYdVd",
"name": "Google Tasks account"
}
},
"typeVersion": 1
},
{
"id": "36a1682b-8390-4273-ac26-1c35ec932294",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
112,
480
],
"webhookId": "task-to-calendar",
"parameters": {
"path": "task-to-calendar",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "0fde8152-49b5-49e5-b52e-23fdb8000d03",
"name": "Google Calendar9",
"type": "n8n-nodes-base.googleCalendar",
"position": [
960,
480
],
"parameters": {
"limit": 3,
"options": {
"query": "={{ $('Webhook').item.json.body.TaskName }}",
"updatedMin": "={{ $now.minus(5, 'minutes') }}",
"showDeleted": "=false"
},
"calendar": {
"__rl": true,
"mode": "id",
"value": "={{ $('Configuration').item.json.calendarId }}"
},
"operation": "getAll"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "20g8lCLkphJifaBd",
"name": "Google Calendar account"
}
},
"typeVersion": 1.1,
"alwaysOutputData": true
},
{
"id": "de1caa4c-f1fc-44cc-baf4-9522f72f2b8d",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
1152,
480
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f08129c7-f807-4915-9012-020c59db3629",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.summary }}",
"rightValue": "={{ $json.summary }}"
},
{
"id": "66c9e6d4-82bd-4e28-9456-4b9c9c1e54a3",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "{{ $('Webhook').item.json.body.TaskName }}",
"rightValue": "{{ $json.summary }}"
}
]
}
},
"typeVersion": 2,
"alwaysOutputData": false
},
{
"id": "b6b89761-d9dd-4f41-b150-c3e1de4246b6",
"name": "ステップ1 – トリガー",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
736
],
"parameters": {
"color": "blue",
"height": 288,
"content": "## Step 1 – Trigger (Webhook)\nReceives a JSON payload and starts the flow.\n\n**Example payload**\n```json\n{ \"TaskName\": \"Pay invoice\", \"DueDateTimeSeconds\": 1735179600 }\n```\nTip: replace the Manual Trigger if you prefer scheduled imports."
},
"typeVersion": 1
},
{
"id": "63bc5ca7-8930-434a-b293-6168a11f5881",
"name": "ステップ2 – 設定",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
736
],
"parameters": {
"color": "blue",
"height": 288,
"content": "## Step 2 – Configuration\nSingle place to adjust variables:\n- `tasklistId` – Google Tasks list ID\n- `calendarId` – target Calendar (e.g., `primary`)\n- `defaultMinutes` – event duration\n- `eventColor` – Calendar color index"
},
"typeVersion": 1
},
{
"id": "91d84006-1103-4686-877d-7135245db2a1",
"name": "ステップ3 – 日付",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
736
],
"parameters": {
"color": "blue",
"height": 176,
"content": "## Step 3 – Date formatting\nBuilds a proper start datetime from `DueDateTimeSeconds`.\nEnd time = start + `defaultMinutes` (configurable)."
},
"typeVersion": 1
},
{
"id": "d4b1604a-8d40-466b-b8a8-a8d7dcdf6f03",
"name": "ステップ4 – 重複排除",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
736
],
"parameters": {
"color": "blue",
"height": 224,
"content": "## Step 4 – Duplicate guard\nSearches recently updated events in the target calendar to prevent duplicates.\nAdjust the search window or title matching to fit your use case."
},
"typeVersion": 1
},
{
"id": "c74b5b51-10c0-4a4f-ada8-450a25846258",
"name": "ステップ5 – イベント作成",
"type": "n8n-nodes-base.stickyNote",
"position": [
1184,
736
],
"parameters": {
"color": "blue",
"height": 192,
"content": "## Step 5 – Create event\nCreates a Calendar event using the formatted start time.\nEnd time = start + `defaultMinutes`. Color taken from `eventColor`."
},
"typeVersion": 1
},
{
"id": "680dfb47-1ef5-482b-a772-01ea49eb67f1",
"name": "ステップ6 – クリーンアップ",
"type": "n8n-nodes-base.stickyNote",
"position": [
1456,
736
],
"parameters": {
"color": "blue",
"height": 192,
"content": "## Step 6 – Cleanup (optional)\nDeletes the original Google Task after creating the Calendar event.\nDisable this if you prefer to keep tasks."
},
"typeVersion": 1
},
{
"id": "ba3e90cf-b8ce-40d7-adfa-f8c8f48891b5",
"name": "フロー概要",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
0
],
"parameters": {
"color": "blue",
"width": 400,
"height": 192,
"content": "## Flow overview\n1) **Webhook** receives task payload →\n2) **Configuration** centralizes variables →\n3) **Date & Time** formats schedule →\n4) **Duplicate guard** checks recent events →\n5) **Create event** on Google Calendar →\n6) **Cleanup** optionally deletes original task."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"de1caa4c-f1fc-44cc-baf4-9522f72f2b8d": {
"main": [
[],
[
{
"node": "0be0e8d0-b369-47e4-9419-90b3def746ad",
"type": "main",
"index": 0
}
]
]
},
"36a1682b-8390-4273-ac26-1c35ec932294": {
"main": [
[
{
"node": "8baf3bc2-affd-4427-ad8f-0a8eef5995e9",
"type": "main",
"index": 0
}
]
]
},
"668b1608-7a1b-4ac2-8570-fcbf8278cfaa": {
"main": [
[
{
"node": "0fde8152-49b5-49e5-b52e-23fdb8000d03",
"type": "main",
"index": 0
}
]
]
},
"6d90eb2d-3275-4525-b5d7-f7e761417683": {
"main": [
[
{
"node": "668b1608-7a1b-4ac2-8570-fcbf8278cfaa",
"type": "main",
"index": 0
}
]
]
},
"8baf3bc2-affd-4427-ad8f-0a8eef5995e9": {
"main": [
[
{
"node": "6d90eb2d-3275-4525-b5d7-f7e761417683",
"type": "main",
"index": 0
}
]
]
},
"0be0e8d0-b369-47e4-9419-90b3def746ad": {
"main": [
[
{
"node": "530619d8-52f2-4bb6-9fed-4068e686127a",
"type": "main",
"index": 0
}
]
]
},
"0fde8152-49b5-49e5-b52e-23fdb8000d03": {
"main": [
[
{
"node": "de1caa4c-f1fc-44cc-baf4-9522f72f2b8d",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 個人の生産性, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
双方向 ClickUp タスクと Google カレンダーの同期付き複数カレンダーラウーティング
バイレクタル ClickUp タスクと Google カレンダーの同期(マルチカレンダールーティング付き)
If
Set
Merge
+
If
Set
Merge
69 ノードR4wd0G
プロジェクト管理
複数の採用サイトからの求人情報の自動化
5 つの求人プラットフォームと AI リジュームジェネレーターを使った就職・応募の自動化
If
Set
Code
+
If
Set
Code
34 ノードGerald Denor
個人の生産性
私の辞書_複雑
GPT-4o-miniとSupabaseで文学作品の英独中辞書を作成
If
Set
Code
+
If
Set
Code
22 ノードXiaoyuan Zhang
個人の生産性
n8nをエクスポート
LINEとOpenAI Visionを使用して画像から食品のカロリーをGoogle Sheetsに記録
If
Set
Code
+
If
Set
Code
17 ノードkote2
個人の生産性
会議議事録とアクションアイテムトラッカー
AIベースの会議議事録:GPT-4の活用、タスク割り当て、マルチチャネル配信
If
Set
Code
+
If
Set
Code
38 ノードJitesh Dugar
コンテンツ作成
エレガントな顧客紹介カスタマーサービス — プロフェッショナル版(汎用、v3)
Notion、メール、CRMの統合による自動顧客オンボーディングシステム
If
Set
Notion
+
If
Set
Notion
31 ノードShelly-Ann Davy
顧客管理