ช่องของทรัพยากรเหตุการณ์ครอบคลุมข้อมูลที่พบบ่อยที่สุดที่เชื่อมโยงกับกิจกรรม เช่น สถานที่ เวลาเริ่มต้น ฯลฯ แต่แอปพลิเคชันอาจต้องการจัดเก็บข้อมูลเมตาเพิ่มเติมเฉพาะสำหรับกรณีการใช้งานของตน Calendar API ช่วยให้คุณตั้งค่าคู่คีย์-ค่าที่ซ่อนอยู่กับกิจกรรมที่เรียกว่าพร็อพเพอร์ตี้แบบขยายได้ พร็อพเพอร์ตี้แบบขยายช่วยให้เก็บข้อมูลเฉพาะแอปพลิเคชันสำหรับกิจกรรมได้อย่างง่ายดายโดยไม่ต้องใช้ฐานข้อมูลภายนอก
ระดับการแชร์
พร็อพเพอร์ตี้แบบขยายมี 2 ประเภท ได้แก่ ส่วนตัวและที่ใช้ร่วมกัน
ผู้เข้าร่วมกิจกรรมทุกคนจะเห็นและแก้ไขพร็อพเพอร์ตี้ที่แชร์ได้ ส่วนพร็อพเพอร์ตี้ส่วนตัวจะตั้งค่าอยู่บน "สำเนา" กิจกรรมในเครื่องของผู้เข้าร่วม 1 คน กล่าวอย่างตรงไปตรงมามากขึ้นคือพร็อพเพอร์ตี้ส่วนตัวมีความเฉพาะเจาะจงสำหรับ calendarId
และ eventId
ที่ใช้ในคำขอ ขณะที่พร็อพเพอร์ตี้ที่แชร์จะแสดงโดยไม่คำนึงถึง calendarId
ที่ใช้ในคำขอ
เพิ่มและอัปเดตที่พัก
พร็อพเพอร์ตี้ที่ขยายจะกำหนดไว้ในทรัพยากรเหตุการณ์ และคุณจะตั้งค่าพร็อพเพอร์ตี้แบบขยายในคำขอ insert, update และpatch ได้เช่นเดียวกับช่องอื่นๆ ขอแนะนำให้ใช้คำขอแพตช์ เพราะจะช่วยให้คุณปรับเปลี่ยนพร็อพเพอร์ตี้บางอย่างโดยที่ตัวอื่นๆ จะไม่เปลี่ยนแปลง การเพิ่มพร็อพเพอร์ตี้ใหม่ด้วยคีย์เดียวกันจะเขียนทับพร็อพเพอร์ตี้ที่มีอยู่ด้วยคีย์เดียวกัน ตัวอย่างต่อไปนี้แสดงการตั้งค่าพร็อพเพอร์ตี้ส่วนตัว
PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
"extendedProperties": {
"private": {
"petsAllowed": "yes"
}
}
}
ลบพร็อพเพอร์ตี้
พร็อพเพอร์ตี้ที่ไม่ได้รวมอยู่ในคำขออัปเดตจะถูกลบ แต่วิธีการที่ดีกว่าคือ ส่งคำขอแพตช์เพื่อตั้งค่าเป็น Null ตัวอย่างต่อไปนี้แสดงการลบพร็อพเพอร์ตี้ส่วนตัว
PATCH https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId
{
"extendedProperties": {
"private": {
"petsAllowed": null
}
}
}
ค้นหาที่พัก
คุณค้นหาเหตุการณ์ตามค่าในพร็อพเพอร์ตี้ขยายได้โดยใช้คำขอ Events.list
ตั้งค่าฟิลด์ privateExtendedProperty หรือ sharedExtendedProperty
เป็นข้อจำกัดในรูปแบบ propertyName=value
ซึ่งจะค้นหาพร็อพเพอร์ตี้ส่วนตัวและพร็อพเพอร์ตี้ที่ใช้ร่วมกันตามลำดับ ตัวอย่างต่อไปนี้แสดงเหตุการณ์ที่มีพร็อพเพอร์ตี้ส่วนตัว petsAllowed=yes
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes
คุณทำซ้ำช่องเหล่านี้ได้หลายครั้งและรวมข้อจำกัด "หรือ" ไว้ด้วยกัน ดังนั้นเหตุการณ์จึงต้องตรงกับข้อจำกัดเพียง 1 อย่างเท่านั้นจึงจะแสดงขึ้นมา
ตัวอย่างต่อไปนี้จะค้นหาเหตุการณ์ที่มีพร็อพเพอร์ตี้ส่วนตัว petsAllowed=yes
หรือ isOutside=yes
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes &privateExtendedProperty=isOutside%3Dyes
โปรดทราบว่าระบบจะรวมข้อจำกัดในพร็อพเพอร์ตี้ส่วนตัวและพร็อพเพอร์ตี้ที่แชร์ไว้ด้วยกัน อย่างไรก็ตาม เหตุการณ์จะต้องตรงกับชุดข้อจำกัดทั้ง 2 ชุดเพื่อแสดงผล
ตัวอย่างต่อไปนี้จะค้นหาเหตุการณ์ที่มีพร็อพเพอร์ตี้ส่วนตัว petsAllowed=yes
และพร็อพเพอร์ตี้สาธารณะ createdBy=myApp
GET https://www.googleapis.com/calendar/v3/calendars/calendarId/events ?privateExtendedProperty=petsAllowed%3Dyes &sharedExtendedProperty=createdBy%3DmyApp
ข้อจำกัด
- ขนาดสูงสุดของคีย์ของพร็อพเพอร์ตี้คือ 44 อักขระ และพร็อพเพอร์ตี้ที่มีคีย์ที่ยาวจะหายไปโดยไม่มีการแจ้งเตือน
- ค่าสูงสุดของค่าของพร็อพเพอร์ตี้คือ 1, 024 อักขระ และพร็อพเพอร์ตี้ที่มีค่ายาวกว่าจะถูกตัดออกแบบไม่มีการแจ้งเตือน
- เหตุการณ์หนึ่งๆ จะมีพร็อพเพอร์ตี้ได้สูงสุด 300 รายการขนาดรวมกันไม่เกิน 32 KB (ขนาดคีย์ + ขนาดค่า) พร็อพเพอร์ตี้ 300 รายการนี้มีพร็อพเพอร์ตี้ที่ใช้ร่วมกันและ ส่วนตัวใน "สำเนา" ทั้งหมดของกิจกรรม