คู่มือนี้จะอธิบายปฏิทิน กิจกรรม และความสัมพันธ์ระหว่างปฏิทินกับกิจกรรม
ปฏิทิน
ปฏิทินคือการรวบรวมกิจกรรมที่เกี่ยวข้อง พร้อมด้วยข้อมูลเมตาเพิ่มเติม เช่น สรุป เขตเวลาเริ่มต้น สถานที่ตั้ง ฯลฯ แต่ละปฏิทินจะระบุด้วยรหัสซึ่งเป็นอีเมล ปฏิทินอาจมีเจ้าของได้หลายคน
กิจกรรม
เหตุการณ์คือการ์ดที่เกี่ยวข้องกับวันที่หรือช่วงวันที่และเวลาที่ต้องการ เหตุการณ์จะระบุด้วยรหัสที่ไม่ซ้ำกัน นอกจากข้อมูลวันที่และเวลาเริ่มต้นและสิ้นสุดแล้ว กิจกรรมยังมีข้อมูลอื่นๆ เช่น สรุป คําอธิบาย สถานที่ สถานะ การช่วยเตือน ไฟล์แนบ ฯลฯ
ประเภทเหตุการณ์
Google ปฏิทินรองรับกิจกรรมครั้งเดียวและที่เกิดซ้ำ ดังนี้
- เหตุการณ์เดียวแสดงถึงเหตุการณ์ที่เกิดขึ้นเพียงครั้งเดียว
- เหตุการณ์ที่เกิดซ้ำจะกำหนดการเกิดหลายครั้ง
กิจกรรมยังอาจเป็นแบบกำหนดเวลาหรือทั้งวันได้ด้วย
- เหตุการณ์ตามเวลาเกิดขึ้นระหว่างจุดใดจุดหนึ่งในช่วงเวลา 2 จุด เหตุการณ์ตามเวลาใช้ช่อง
start.dateTime
และend.dateTime
เพื่อระบุเวลาที่จะเกิดเหตุการณ์ - กิจกรรมตลอดทั้งวันครอบคลุมทั้งวันหรือชุดวันติดต่อกัน เหตุการณ์ตลอดทั้งวันจะใช้ช่อง
start.date
และend.date
เพื่อระบุเวลาที่เกิดเหตุการณ์ โปรดทราบว่าช่องเขตเวลาไม่มีความหมายสําหรับกิจกรรมตลอดวัน
ผู้จัด
กิจกรรมมีผู้จัดเพียงรายเดียว ซึ่งเป็นปฏิทินที่มีสำเนาหลักของกิจกรรม กิจกรรมอาจมีผู้เข้าร่วมหลายคนได้ โดยปกติแล้ว ผู้เข้าร่วมจะเป็นปฏิทินหลักของผู้ใช้ที่ได้รับเชิญ
แผนภาพต่อไปนี้แสดงความสัมพันธ์เชิงแนวคิดระหว่างปฏิทิน กิจกรรม และองค์ประกอบอื่นๆ ที่เกี่ยวข้อง
ปฏิทินหลักและปฏิทินอื่นๆ
ปฏิทินหลักเป็นปฏิทินประเภทพิเศษที่เชื่อมโยงกับบัญชีผู้ใช้บัญชีเดียว ระบบจะสร้างปฏิทินนี้โดยอัตโนมัติสำหรับบัญชีผู้ใช้ใหม่แต่ละบัญชี และโดยปกติรหัสของปฏิทินจะตรงกับอีเมลหลักของผู้ใช้ ตราบใดที่บัญชียังอยู่ ผู้ใช้จะลบหรือ "ยกเลิกการเป็นเจ้าของ" ปฏิทินหลักของบัญชีไม่ได้ แต่ผู้ใช้จะยังแชร์กับผู้ใช้รายอื่นได้
นอกจากปฏิทินหลักแล้ว คุณยังสร้างปฏิทินอื่นๆ ได้ไม่จำกัดจำนวน โดยปฏิทินเหล่านี้จะแก้ไข ลบ และแชร์กับผู้ใช้หลายคนได้
ปฏิทินและรายการปฏิทิน
คอลเล็กชันปฏิทินแสดงปฏิทินที่มีอยู่ทั้งหมด ซึ่งสามารถใช้สร้างและลบปฏิทิน นอกจากนี้ คุณยังเรียกดูหรือตั้งค่าพร็อพเพอร์ตี้ส่วนกลางที่แชร์กับผู้ใช้ทุกคนที่มีสิทธิ์เข้าถึงปฏิทินได้ด้วย เช่น ชื่อและเขตเวลาเริ่มต้นของปฏิทินเป็นพร็อพเพอร์ตี้ส่วนกลาง
CalendarList คือคอลเล็กชันรายการปฏิทินทั้งหมดที่ผู้ใช้เพิ่มลงในรายการ (แสดงในแผงด้านซ้ายของ UI บนเว็บ) คุณสามารถใช้เพื่อเพิ่มและนำปฏิทินที่มีอยู่ออกจากรายการของผู้ใช้ นอกจากนี้ คุณยังใช้เพื่อเรียกข้อมูลและตั้งค่าค่าของพร็อพเพอร์ตี้ปฏิทินเฉพาะผู้ใช้ เช่น การช่วยเตือนเริ่มต้นได้ด้วย อีกตัวอย่างหนึ่งคือสีพื้นหน้า เนื่องจากผู้ใช้แต่ละรายสามารถตั้งค่าสีที่แตกต่างกันสำหรับปฏิทินเดียวกัน
ตารางต่อไปนี้เปรียบเทียบความหมายของการดำเนินการสำหรับคอลเล็กชันทั้ง 2 รายการ
การดำเนินการ | ปฏิทิน | CalendarList |
---|---|---|
insert |
สร้างปฏิทินรองใหม่ โดยค่าเริ่มต้น ระบบจะเพิ่มปฏิทินนี้ลงในรายการปฏิทินของครีเอเตอร์ด้วย | แทรกปฏิทินที่มีอยู่ลงในรายการของผู้ใช้ |
delete |
ลบปฏิทินรอง | นำปฏิทินออกจากรายการของผู้ใช้ |
get |
เรียกข้อมูลเมตาของปฏิทิน เช่น ชื่อ เขตเวลา | ดึงข้อมูลเมตาและการปรับแต่งเฉพาะผู้ใช้ เช่น สีหรือการแจ้งเตือนที่ลบล้าง |
patch /update |
แก้ไขข้อมูลเมตาของปฏิทิน | แก้ไขพร็อพเพอร์ตี้ปฏิทินเฉพาะผู้ใช้ |
กิจกรรมที่เกิดซ้ำ
กิจกรรมบางอย่างเกิดขึ้นหลายครั้งตามกำหนดการปกติ เช่น การประชุมรายสัปดาห์ วันเกิด และวันหยุด นอกเหนือจากเวลาเริ่มต้นและเวลาสิ้นสุดที่แตกต่างกันแล้ว กิจกรรมที่เกิดซ้ำเหล่านี้มักจะเหมือนกัน
กิจกรรมจะเรียกว่าเกิดซ้ำหากเกิดซ้ำตามกำหนดเวลาที่กําหนด เหตุการณ์เดี่ยวจะไม่เกิดซ้ำและเกิดขึ้นเพียงครั้งเดียว
กฎการเกิดซ้ำ
กําหนดเวลาของกิจกรรมที่เกิดซ้ำได้ 2 ส่วนดังนี้
ช่องเริ่มต้นและสิ้นสุด (ซึ่งกําหนดการเกิดครั้งแรก ราวกับว่าเหตุการณ์นี้เป็นเหตุการณ์เดี่ยวๆ ที่เกิดขึ้นเอง) และ
ช่องการเกิดซ้ำ (ซึ่งกําหนดวิธีทําให้เหตุการณ์เกิดซ้ำเมื่อเวลาผ่านไป)
ฟิลด์ความถี่มีอาร์เรย์สตริงที่แสดงพร็อพเพอร์ตี้ RRULE
, RDATE
หรือ EXDATE
อย่างน้อย 1 รายการตามที่ระบุไว้ใน RFC 5545
พร็อพเพอร์ตี้ RRULE
มีความสำคัญมากที่สุดเนื่องจากกำหนดกฎทั่วไปสำหรับการทำซ้ำเหตุการณ์ ซึ่งประกอบด้วยองค์ประกอบหลายอย่าง ตัวอย่างของรายการเหล่านี้ ได้แก่
FREQ
— ความถี่ที่ควรให้เหตุการณ์เกิดซ้ำ (เช่นDAILY
หรือWEEKLY
) ต้องระบุINTERVAL
— ทํางานร่วมกับFREQ
เพื่อระบุความถี่ที่ควรทำซ้ำกิจกรรม เช่นFREQ=DAILY;INTERVAL=2
หมายถึง 1 ครั้งในทุกๆ 2 วันCOUNT
— จํานวนครั้งที่เหตุการณ์นี้ควรเกิดซ้ำUNTIL
— วันที่หรือวันที่และเวลาซึ่งกิจกรรมควรเกิดซ้ำ (รวมวันที่และเวลาดังกล่าว)BYDAY
— วันของสัปดาห์ที่ควรทำซ้ำกิจกรรม (SU
,MO
,TU
ฯลฯ) คอมโพเนนต์อื่นๆ ที่คล้ายกัน ได้แก่BYMONTH
,BYYEARDAY
และBYHOUR
พร็อพเพอร์ตี้ RDATE
จะระบุวันที่หรือวันที่และเวลาเพิ่มเติมที่เหตุการณ์ควรเกิดขึ้น เช่น RDATE;VALUE=DATE:19970101,19970120
ใช้เพื่อเพิ่มรายการเพิ่มเติมที่ไม่ได้อยู่ใน RRULE
พร็อพเพอร์ตี้ EXDATE
คล้ายกับ RDATE แต่ระบุวันที่หรือวันที่และเวลาซึ่งกิจกรรมไม่ควรเกิดขึ้น กล่าวคือ ควรยกเว้นเหตุการณ์เหล่านั้น ซึ่งต้องชี้ไปยังอินสแตนซ์ที่ถูกต้องซึ่งสร้างขึ้นโดยกฎการเกิดซ้ำ
EXDATE
และ RDATE
อาจมีเขตเวลา และต้องเป็นวันที่ (ไม่ใช่วันที่และเวลา) สำหรับกิจกรรมตลอดทั้งวัน
พร็อพเพอร์ตี้แต่ละรายการอาจปรากฏในช่องการเกิดซ้ำหลายครั้ง
การเกิดซ้ำจะกำหนดเป็นสหพันธ์ของกฎ RRULE
และ RDATE
ทั้งหมด ลบกฎที่กฎ EXDATE
ทั้งหมดยกเว้นไว้
ตัวอย่างเหตุการณ์ที่เกิดขึ้นซ้ำๆ มีดังนี้
กิจกรรมที่เกิดขึ้นตั้งแต่ 06:00 น. ถึง 07:00 น. ทุกวันอังคารและวันศุกร์ โดยเริ่มตั้งแต่ที่ 15 กันยายน 2015 และหยุดหลังจากเกิดเหตุการณ์ครั้งที่ 5 ในวันที่ 29 กันยายน
... "start": { "dateTime": "2015-09-15T06:00:00+02:00", "timeZone": "Europe/Zurich" }, "end": { "dateTime": "2015-09-15T07:00:00+02:00", "timeZone": "Europe/Zurich" }, "recurrence": [ "RRULE:FREQ=WEEKLY;COUNT=5;BYDAY=TU,FR" ], …
กิจกรรมตลอดทั้งวันที่เริ่มในวันที่ 1 มิถุนายน 2015 และเกิดซ้ำทุก 3 วันตลอดทั้งเดือน ยกเว้นวันที่ 10 มิถุนายน แต่รวมวันที่ 9 และ 11 มิถุนายน
... "start": { "date": "2015-06-01" }, "end": { "date": "2015-06-02" }, "recurrence": [ "EXDATE;VALUE=DATE:20150610", "RDATE;VALUE=DATE:20150609,20150611", "RRULE:FREQ=DAILY;UNTIL=20150628;INTERVAL=3" ], …
อินสแตนซ์และข้อยกเว้น
เหตุการณ์ที่เกิดซ้ำประกอบด้วยอินสแตนซ์หลายรายการ ซึ่งก็คือการเกิดของเหตุการณ์นั้นๆ ในช่วงเวลาต่างๆ อินสแตนซ์เหล่านี้จะทําหน้าที่เป็นเหตุการณ์
การแก้ไขเหตุการณ์ที่เกิดซ้ำอาจส่งผลต่อเหตุการณ์ที่เกิดซ้ำทั้งรายการ (และอินสแตนซ์ทั้งหมดของเหตุการณ์) หรือเฉพาะอินสแตนซ์แต่ละรายการ อินสแตนซ์ที่แตกต่างจากเหตุการณ์ที่เกิดซ้ำหลักเรียกว่าข้อยกเว้น
เช่น ข้อยกเว้นอาจมีสรุป เวลาเริ่มต้น หรือผู้เข้าร่วมเพิ่มเติมที่เชิญให้เข้าร่วมเฉพาะอินสแตนซ์นั้นๆ นอกจากนี้ คุณยังยกเลิกอินสแตนซ์โดยรวมได้โดยไม่ต้องนำกิจกรรมที่เกิดซ้ำออก (การยกเลิกอินสแตนซ์จะแสดงในกิจกรรม status
)
ดูตัวอย่างวิธีจัดการกิจกรรมและอินสแตนซ์ที่เกิดซ้ำผ่าน Google Calendar API ได้ที่นี่
เขตเวลา
เขตเวลาจะระบุภูมิภาคที่ใช้เวลามาตรฐานแบบเดียวกัน ใน Google Calendar API คุณจะระบุเขตเวลาได้โดยใช้ตัวระบุเขตเวลา IANA
คุณตั้งค่าเขตเวลาสำหรับทั้งปฏิทินและกิจกรรมได้ ส่วนต่อไปนี้จะอธิบายผลของการตั้งค่าเหล่านี้
เขตเวลาของปฏิทิน
เขตเวลาของปฏิทินเรียกอีกอย่างว่าเขตเวลาเริ่มต้นเนื่องจากมีผลกระทบต่อผลการค้นหา เขตเวลาของปฏิทินส่งผลต่อวิธีตีความหรือแสดงค่าเวลาโดยเมธอด events.get()
, events.list()
และ events.instances()
- การแปลงเขตเวลาของผลการค้นหา
- ระบบจะแสดงผลลัพธ์ของวิธี
get()
,list()
และinstances()
ในเขตเวลาที่ระบุไว้ในพารามิเตอร์timeZone
หากคุณละเว้นพารามิเตอร์นี้ วิธีการทั้งหมดเหล่านี้จะใช้เขตเวลาของปฏิทินเป็นค่าเริ่มต้น - การจับคู่กิจกรรมตลอดทั้งวันกับคำค้นหาที่มีช่วงเวลา
- เมธอด
list()
และinstances()
ช่วยให้คุณระบุตัวกรองเวลาเริ่มต้นและเวลาสิ้นสุดได้ โดยเมธอดจะแสดงอินสแตนซ์ที่อยู่ในช่วงที่ระบุ ระบบจะใช้เขตเวลาของปฏิทินเพื่อคํานวณเวลาเริ่มต้นและเวลาสิ้นสุดของกิจกรรมที่จัดขึ้นตลอดทั้งวันเพื่อพิจารณาว่ากิจกรรมดังกล่าวอยู่ภายในข้อกําหนดของตัวกรองหรือไม่
เขตเวลาของกิจกรรม
อินสแตนซ์เหตุการณ์มีเวลาเริ่มต้นและสิ้นสุด ข้อกําหนดสำหรับเวลาเหล่านี้อาจรวมถึงเขตเวลา คุณระบุเขตเวลาได้หลายวิธี โดยตัวอย่างต่อไปนี้ระบุเวลาเดียวกัน
- ใส่ออฟเซ็ตเขตเวลาในช่อง
dateTime
เช่น2017-01-25T09:00:00-0500
- ระบุเวลาโดยไม่มีเวลาออฟเซ็ต เช่น
2017-01-25T09:00:00
โดยปล่อยช่องtimeZone
ว่างไว้ (การดำเนินการนี้จะใช้เขตเวลาเริ่มต้นโดยนัย) - ระบุเวลาโดยไม่มีเวลาออฟเซ็ต เช่น
2017-01-25T09:00:00
แต่ใช้ช่องtimeZone
เพื่อระบุเขตเวลา
นอกจากนี้ คุณยังระบุเวลาของเหตุการณ์เป็น UTC ได้หากต้องการ โดยทำดังนี้
- ระบุเวลาเป็น UTC:
2017-01-25T14:00:00Z
หรือใช้การชดเชยเป็น 02017-01-25T14:00:00+0000
การนำเสนอเวลาของกิจกรรมภายในจะเหมือนกันในทุกกรณีเหล่านี้ แต่การตั้งค่าช่อง timeZone
จะแนบเขตเวลากับกิจกรรม เช่นเดียวกับเมื่อคุณตั้งค่าเขตเวลาของกิจกรรมโดยใช้ UI ของปฏิทิน
เขตเวลาของกิจกรรมที่เกิดซ้ำ
สําหรับกิจกรรมที่เกิดซ้ำ คุณต้องระบุเขตเวลาเดียวเสมอ เนื่องจากจำเป็นต้องใช้เพื่อขยายความถี่ของเหตุการณ์