n8n Thai
by n8n Thai

n8n x Google Calendar: จัดการนัดหมายอัตโนมัติ

ใช้ n8n สร้าง อ่าน อัปเดต และลบ Event ใน Google Calendar อัตโนมัติ เชื่อมกับ Forms, Sheets และระบบจองได้ครบ

n8n x Google Calendar: จัดการนัดหมายอัตโนมัติ

การจัดการนัดหมายด้วยมือในธุรกิจที่มีลูกค้าจำนวนมากเป็นงานที่ใช้เวลามาก ทั้งการสร้าง Event, ส่งคำเชิญ, อัปเดตเมื่อเปลี่ยนเวลา และแจ้งเตือนก่อนถึงนัด n8n เชื่อมกับ Google Calendar ทำให้ขั้นตอนเหล่านี้เกิดขึ้นเองโดยอัตโนมัติตามเงื่อนไขที่กำหนด

Google Calendar Node ทำอะไรได้บ้าง

n8n รองรับ Operation หลักของ Google Calendar:

  • Create Event สร้าง Event ใหม่พร้อม Title, Description, เวลาเริ่ม-จบ, Location และ Attendees
  • Get Event ดึงรายละเอียด Event เดียวตาม ID
  • Get Many Events ดึงรายการ Event ในช่วงเวลาที่กำหนด
  • Update Event แก้ไขข้อมูล Event ที่มีอยู่
  • Delete Event ลบ Event
  • Add Attendee เพิ่มผู้เข้าร่วม Event

ทุก Operation ใช้ Google OAuth2 Credential เดียวกับ Sheets และ Gmail

ตั้งค่า Google Calendar Credentials

ใช้ Credential เดียวกับที่ตั้งค่าสำหรับบริการ Google อื่น แต่ต้องเปิดใช้ Google Calendar API ใน Google Cloud Console ด้วย ถ้ายังไม่ได้ทำดูขั้นตอนเต็มที่คู่มือ Google Workspace

สร้าง Event อัตโนมัติจากการจอง

ขั้นตอนการสร้าง Event:

  1. เพิ่ม Google Calendar Node ใน Workflow
  2. เลือก Operation: Create Event
  3. ระบุ Calendar ID (ใช้ primary สำหรับ Calendar หลัก หรือ Email ของ Calendar อื่น)
  4. ตั้งค่า Fields:
Summary (Title):  การนัดหมาย: {{ $json.service_name }}
Description:      ลูกค้า: {{ $json.name }}\nโทร: {{ $json.phone }}
Start Time:       {{ $json.appointment_date }}T{{ $json.appointment_time }}:00+07:00
End Time:         {{ $json.appointment_end }}T{{ $json.appointment_end_time }}:00+07:00
Attendees:        {{ $json.customer_email }}
Location:         {{ $json.location }}

ข้อสำคัญเรื่อง Timezone: Google Calendar ใช้ ISO 8601 format สำหรับเวลา ต้องระบุ Timezone ด้วย สำหรับไทยใช้ +07:00 ต่อท้าย มิฉะนั้น Event อาจแสดงเวลาผิด

Workflow จริง: ระบบจองนัดหมาย

สถานการณ์: คลินิกหรือร้านเสริมสวยที่รับจองผ่าน Google Forms

  1. Webhook Node หรือ Cron อ่านข้อมูลจาก Google Forms (ดูวิธีที่คู่มือ Google Forms)
  2. IF Node ตรวจสอบว่าเวลานั้นว่างไหม โดยดึง Event จาก Calendar ในช่วงเวลานั้น
  3. แตก Branch:
    • ถ้าว่าง: สร้าง Calendar Event + ส่ง Gmail ยืนยัน + บันทึก Sheets
    • ถ้าไม่ว่าง: ส่ง Gmail แจ้งลูกค้าพร้อมแนะนำเวลาอื่น

ตรวจสอบว่าเวลาว่างหรือไม่:

// Code Node ตรวจสอบ Event ที่ซ้อนทับกัน
const events = $input.all();
const requestedStart = new Date($('Webhook').first().json.appointment_time);
const requestedEnd = new Date(requestedStart.getTime() + 60 * 60 * 1000); // +1 ชั่วโมง

const hasConflict = events.some(event => {
  const eventStart = new Date(event.json.start.dateTime);
  const eventEnd = new Date(event.json.end.dateTime);
  return requestedStart < eventEnd && requestedEnd > eventStart;
});

return [{ json: { available: !hasConflict } }];

ดึง Event เพื่อใช้ใน Workflow

Get Many Events ใช้ดึง Event ในช่วงเวลาที่กำหนด เหมาะสำหรับ:

  • สรุปนัดหมายของวันนี้และส่ง LINE แจ้งทีมตอนเช้า
  • ดึงนัดหมายของสัปดาห์หน้ามาวางแผนทรัพยากร
  • ตรวจสอบนัดหมายที่ใกล้ถึงเพื่อส่งอีเมลเตือนล่วงหน้า

ตัวอย่าง Workflow แจ้งเตือนก่อนนัด 1 ชั่วโมง:

  1. Cron Node ทุกชั่วโมง
  2. Google Calendar Node ดึง Event ในช่วง now ถึง now + 1 ชั่วโมง
  3. Filter Node กรองเฉพาะ Event ที่ยังไม่ได้ส่งเตือน (ใช้ Flag ใน Description หรือ Sheets)
  4. Gmail Node ส่งอีเมลเตือนลูกค้า
  5. Google Calendar Node Update Event เพิ่ม “Reminder Sent” ใน Description

อัปเดตและยกเลิกนัดหมาย

เมื่อลูกค้าต้องการเลื่อนหรือยกเลิกนัด Workflow สามารถจัดการได้:

  1. รับ Request ยกเลิก/เลื่อน (ผ่าน Webhook, LINE, หรือ Form)
  2. ดึง Event ID จาก Sheets โดยใช้ข้อมูลเช่น Phone หรือ Booking ID
  3. Update Event เปลี่ยนเวลา หรือ Delete Event ถ้ายกเลิก
  4. Gmail Node ส่งยืนยันการเปลี่ยนแปลง
  5. Google Sheets Node Update สถานะการจองใน Sheets

เคล็ดลับการใช้งาน Calendar Node

Calendar ID: แต่ละ Calendar ใน Google Calendar มี ID เฉพาะ สำหรับ Calendar หลักให้ใช้ primary หรือ Email Address ของผู้ใช้ สำหรับ Calendar อื่นหาได้จาก Google Calendar Settings > Calendar ที่ต้องการ > ส่วน Calendar ID

Attendees และ Send Notifications: เมื่อเพิ่ม Attendees ใน Event Google จะส่งคำเชิญอัตโนมัติ ถ้าไม่ต้องการส่งคำเชิญให้ตั้งค่า sendNotifications: false

Recurring Events: n8n รองรับการสร้าง Recurring Event ด้วย RRULE format เช่น RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR สำหรับ Event ที่เกิดขึ้นทุก จันทร์ พุธ ศุกร์

อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co

Related posts