Google カレンダーとテーブルを使用して AI 駆動のバーチャルリセプションストラフを作成
中級
これはMiscellaneous, AI Chatbot, Multimodal AI分野の自動化ワークフローで、12個のノードを含みます。主にGoogleSheets, Agent, GoogleSheetsTool, GoogleCalendarTool, ChatTriggerなどのノードを使用。 Googleカレンダーとテーブルを使ってAI駆動のバーチャルリセプションストを作成
前提条件
- •Google Sheets API認証情報
- •OpenAI API Key
使用ノード (12)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"meta": {
"instanceId": "a2decaa80798f56a13dbca1aa742181dfea463e822cc650b5a716ef8b115667a"
},
"nodes": [
{
"id": "e38100f0-54dd-4a75-a3bd-3b6295ca96d0",
"name": "会話メモリ",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
336,
16
],
"parameters": {
"contextWindowLength": 15
},
"typeVersion": 1.3
},
{
"id": "22a387d3-ffdd-4221-b27d-dde8711c1186",
"name": "カレンダー空き状況確認",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
720,
16
],
"parameters": {
"options": {},
"timeMax": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
"timeMin": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ) for availability check`, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "ris362720@gmail.com",
"cachedResultName": "ris362720@gmail.com"
},
"resource": "calendar"
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "ZKFdGvnaSxLoLCiO",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "f62ef70f-6295-4a02-8342-83d3a67d5429",
"name": "カレンダー予約登録",
"type": "n8n-nodes-base.googleCalendarTool",
"position": [
592,
16
],
"parameters": {
"end": "={{ $fromAI('end_datetime', `End datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
"start": "={{ $fromAI('start_datetime', `Start datetime in ISO format with timezone (YYYY-MM-DDTHH:MM:SS+TZ)`, 'string') }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "ris362720@gmail.com",
"cachedResultName": "ris362720@gmail.com"
},
"additionalFields": {
"summary": "={{ $fromAI('event_title', `Event title with customer name and service`, 'string') }}",
"description": "={{ $fromAI('event_description', `Detailed event description including: Business name, Service type, Duration, Customer name, Phone, Special notes`, 'string') }}"
},
"useDefaultReminders": false
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "ZKFdGvnaSxLoLCiO",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "ca5ad6d5-227f-4776-9f37-ed9497d838d9",
"name": "予約記録保存",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
464,
16
],
"parameters": {
"columns": {
"value": {
"summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('summary', `summary conversation`, 'string') }}",
"event_id": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('event_id', ``, 'string') }}",
"services": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('services', ``, 'string') }}",
"patient name ": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_name_', ``, 'string') }}",
"patient number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('patient_number', ``, 'string') }}"
},
"schema": [
{
"id": "patient number",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "patient number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "patient name ",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "patient name ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "event_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "event_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "summary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "services",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "services",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1454968607,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=1454968607",
"cachedResultName": "Sheet2"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
"cachedResultName": "Bussiness details"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "fGbQfgGA6gTKu9Jd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"disabled": true,
"position": [
848,
16
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n \"ai_reply\": \"I'd be happy to help you! What service are you interested in booking today?\"\n}"
},
"typeVersion": 1.3
},
{
"id": "ba1c4cff-5e5e-487a-952e-60c886cd0fb8",
"name": "チャットメッセージ受信時",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-544,
-208
],
"webhookId": "73eb01dc-fa71-4f00-b3e8-17e716ef86f6",
"parameters": {
"options": {}
},
"typeVersion": 1.3
},
{
"id": "02fce16f-b548-4db3-a5c4-e6b06c4d0f55",
"name": "OpenAI チャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
208,
16
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "TEPbLQLrisXKXcU1",
"name": "n8n free OpenAI API credits"
}
},
"typeVersion": 1.2
},
{
"id": "52494195-7502-473f-a254-afb53bf89a74",
"name": "OpenAI チャットモデル1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
928,
224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "TEPbLQLrisXKXcU1",
"name": "n8n free OpenAI API credits"
}
},
"typeVersion": 1.2
},
{
"id": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
"name": "事業詳細取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
-176,
-208
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sEfkvCT_4GGlleZKcQfWy1Z8V2FEg2BH2eY0LDzrnt8/edit?usp=drivesdk",
"cachedResultName": "Bussiness details"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "fGbQfgGA6gTKu9Jd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "f0752315-6a90-48df-a8fe-9dda53d2c58d",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
-336
],
"parameters": {
"color": 3,
"width": 416,
"height": 272,
"content": "## Get Business Details\nPulls service list, hours, policies, and AI personality from Google Sheets. \nProvides the AI with the business-specific context. "
},
"typeVersion": 1
},
{
"id": "b4ebcd48-a651-4bad-b7c3-dd6939bea1ed",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-320
],
"parameters": {
"color": 4,
"width": 976,
"height": 528,
"content": "## AI Receptionist Agent \nHandles customer chat with GPT + business context, \nanswers questions, books appointments via Google Calendar, \nand saves appointment records into Google Sheets. \n"
},
"typeVersion": 1
},
{
"id": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"name": "AI受付",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
464,
-208
],
"parameters": {
"text": "={{ $('When chat message received').item.json.chatInput }}",
"options": {
"systemMessage": "=# {{ $json['ai_name '] }} - {{ $json.business_name }} Virtual Receptionist\n\nYou are {{ $json['ai_name '] }}, the {{ $json.ai_personality }} virtual receptionist at **{{ $json.business_name }}**. Your role is to {{ $json.ai_role }}\n\n## BUSINESS ESSENTIALS\n\n**Type**: {{ $json[' business_type'] }}\n**Location**: {{ $json[' location'] }}\n**Hours**: {{ $json[' working_hours '] }}\n**Currency**: {{ $json.currency }}\n\n### Services & Pricing\n{{ $json.services }}\n\n## COMMUNICATION STYLE\n- **Tone**: {{ $json.ai_personality }}\n- **Length**: 2-3 sentences per response\n- **Approach**: Natural conversation, not robotic\n- **Use names**: Once provided, use customer's name\n\n## BOOKING WORKFLOW\n1. **Understand need**: Service type, timing preference\n2. **Check availability**: Use checkAvailability tool with business calendar\n3. **Gather details**: Name, phone number, email (optional)\n4. **Confirm booking**: Use bookAppointment tool\n5. **Save data**: Use captureCustomerData and saveAppointment tools\ntime now: {{ $now }}\n\n## KEY GUIDELINES\n\n### ✅ DO\n- Welcome warmly: \"Hello! I'm {{ $json['ai_name '] }} from {{ $json.business_name }}\"\n- Offer alternatives if requested time unavailable\n- Prioritize emergencies if emergency services available\n- Explain pricing clearly when asked\n- Use all available tools for complete booking process\n\n### ❌ DON'T\n- Give medical/professional advice outside your scope\n- Book outside business hours\n- Repeat questions already answered\n- Ask for unnecessary personal information\n- Provide vague responses about availability\n\n## EMERGENCY PROTOCOL\n{% if $('Select Business Context').item.json.emergency_available %}\nEmergencies are available. Prioritize urgent requests and offer same-day slots when possible.\n{% endif %}\n\n## BUSINESS CONTEXT\n\n- Timezone: {{ $json['timezone '] }}\n- Advance booking limit:{{ $json[' booking_advance_days '] }} days\n- Cancellation policy: {{ $json['cancellation_hours '] }} hours notice\n\n---\nProvide responses in this JSON format:\n{\n \"ai_reply\": \"Your helpful and personalized response here\"\n}\n\n**Remember**: You're representing {{ $json.business_name }}. Be helpful, accurate, and maintain the professional standard they expect."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
}
],
"pinData": {},
"connections": {
"02fce16f-b548-4db3-a5c4-e6b06c4d0f55": {
"ai_languageModel": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"52494195-7502-473f-a254-afb53bf89a74": {
"ai_languageModel": [
[
{
"node": "c519dbd4-c95e-4c12-bd46-ccb76d4301ca",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"e38100f0-54dd-4a75-a3bd-3b6295ca96d0": {
"ai_memory": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_memory",
"index": 0
}
]
]
},
"44f4d1d4-6d39-45ad-ad78-a9febf0e52e2": {
"main": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "main",
"index": 0
}
]
]
},
"ca5ad6d5-227f-4776-9f37-ed9497d838d9": {
"ai_tool": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_tool",
"index": 0
}
]
]
},
"c519dbd4-c95e-4c12-bd46-ccb76d4301ca": {
"ai_outputParser": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"f62ef70f-6295-4a02-8342-83d3a67d5429": {
"ai_tool": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_tool",
"index": 0
}
]
]
},
"ba1c4cff-5e5e-487a-952e-60c886cd0fb8": {
"main": [
[
{
"node": "44f4d1d4-6d39-45ad-ad78-a9febf0e52e2",
"type": "main",
"index": 0
}
]
]
},
"22a387d3-ffdd-4221-b27d-dde8711c1186": {
"ai_tool": [
[
{
"node": "4c6250f1-093a-49c1-a496-b8b883ca4787",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - その他, AIチャットボット, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
💥 ChatGPT-5を使って最初のAIエージェントを構築する
GPT-5、Googleカレンダー、およびスプレッドシートを使って知識ベースとスケジュールAIアシスタントを作成
Gmail Tool
Agent
Google Sheets Tool
+
Gmail Tool
Agent
Google Sheets Tool
14 ノードDr. Firas
その他
Dream 100 リサーチエージェント
Perplexity AI を使って研究し、Google Sheets で Dream 100 リードリストを生成
If
Set
Slack
+
If
Set
Slack
29 ノードBrandon True
その他
ペットビューティー公開と予約の自動化
AI、Facebook、Telegram ボットを使ったペットコーディネーションの掲載と予約の自動化
If
Set
Switch
+
If
Set
Switch
36 ノードChristian Moises
AIチャットボット
🚀 Shopifyブランドを対象としたAI駆動型WhatsAppカスタマーサポート
Shopify向けのAI駆動WhatsAppカスタマーサポート(LLMエージェント)
Set
Slack
Switch
+
Set
Slack
Switch
30 ノードRuthwik
その他
WhatsApp顧客支援を自動化:音声文字起こし、FAQ、予約スケジュールも含む
WhatsApp カスタマーサポートを自動化(音声文字起こし、FAQ、予約調整込み)
If
Set
Switch
+
If
Set
Switch
23 ノードAureusR
その他
スマートチャットボット
GPT-5-nano、ウェブ検索、対話メモリを使用して、スマートチャットボットを構築
Chat
Agent
Http Request Tool
+
Chat
Agent
Http Request Tool
13 ノードOriol Seguí
その他