Google Slides API ช่วยให้คุณจัดการตำแหน่ง ขนาด และการวางแนวของ PageElement
(กล่องข้อความ รูปภาพ ตาราง และรูปร่างพื้นฐาน) ในหน้าเว็บได้ ขณะเดียวกันก็ทำให้เส้นตรงอยู่เสมอ รวมถึงเก็บรักษาจุดและเส้นขนาน ซึ่งเรียกว่าการเปลี่ยนรูปแบบเชิงเชิงเส้น ตัวอย่างต่อไปนี้แสดงการดำเนินการเปลี่ยนรูปแบบองค์ประกอบหน้าเว็บทั่วไปโดยใช้เมธอด presentations.batchUpdate
ตัวอย่างเหล่านี้ใช้ตัวแปรต่อไปนี้
- PRESENTATION_ID - ระบุตำแหน่งที่คุณระบุรหัสงานนำเสนอ คุณสามารถดูค่าของรหัสนี้ได้จาก URL ของงานนำเสนอ
- PAGE_ID - ระบุตําแหน่งที่คุณระบุรหัสออบเจ็กต์หน้าเว็บ คุณสามารถดึงค่านี้ได้จาก URL หรือใช้คําขออ่าน API
- PAGE_ELEMENT_ID - ระบุตำแหน่งที่คุณระบุรหัสออบเจ็กต์องค์ประกอบหน้าเว็บ คุณสามารถระบุรหัสนี้สำหรับองค์ประกอบที่คุณสร้าง (โดยมีข้อจำกัดบางอย่าง) หรืออนุญาตให้ Slides API สร้างรหัสโดยอัตโนมัติ รหัสองค์ประกอบจะดึงข้อมูลได้ผ่านคําขออ่าน API
ตัวอย่างเหล่านี้แสดงเป็นคำขอ HTTP เพื่อไม่ระบุภาษา ดูวิธีใช้การอัปเดตแบบเป็นกลุ่มในภาษาต่างๆ โดยใช้ไลบรารีไคลเอ็นต์ Google API ได้ที่เพิ่มรูปร่างและข้อความ
ตัวอย่างรูปร่างลูกศร
สําหรับตัวอย่างด้านล่างนี้ สมมติว่าองค์ประกอบหน้าเว็บรูปลูกศรมีข้อมูลขนาดและการเปลี่ยนรูปแบบดังต่อไปนี้ (ดูได้จากคําขอpresentations.pages.get
Method) รูปร่างตัวอย่างใช้การวัด EMU (หน่วยเมตริกอังกฤษ) unit
และ pt (จุด)
{ "objectId": PAGE_ELEMENT_ID, "size": { "width": { "magnitude": 3000000, "unit": "EMU" }, "height": { "magnitude": 3000000, "unit": "EMU" } }, "transform": { "scaleX": 0.3, "scaleY": 0.12, "shearX": 0, "shearY": 0, "translateX": 2000000, "translateY": 550000, "unit": "EMU" }, "shape": { "shapeType": "RIGHT_ARROW" } }
จัดแนวองค์ประกอบให้สอดคล้องกับองค์ประกอบอื่น
ตัวอย่างโค้ดต่อไปนี้
presentations.batchUpdate
แสดงวิธีใช้เมธอด CreateShapeRequest
เพื่อสร้างรูปร่างใหม่ในตําแหน่งที่เหมาะสมซึ่งสอดคล้องกับรูปร่างลูกศรตัวอย่างในหน้า ในกรณีทั้ง 2 กรณี จะต้องคํานวณพิกัด X และ Y ของมุมซ้ายบนของรูปร่างใหม่
คำขอแรกจะสร้างสี่เหลี่ยมผืนผ้าขนาด 100 x 50 พิกเซลที่สอดคล้องกับขอบด้านซ้ายของรูปร่างลูกศร แต่อยู่ต่ำกว่าขอบด้านบนของลูกศร 50 พิกเซล (50 * 12,700 = 635,000 EMU) พิกัด X ของสี่เหลี่ยมผืนผ้าใหม่ควรเหมือนกับพิกัด X ของลูกศรเพื่อให้ขอบด้านซ้ายของสี่เหลี่ยมผืนผ้านั้นยังคงอยู่ในแนว พิกัด Y จะเหมือนกับพิกัด Y ของลูกศรบวก 50 pt เนื่องจากระยะทางวัดจากด้านบนของลูกศร พิกัดของสี่เหลี่ยมผืนผ้าจึงมีดังนี้
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
คําขอที่ 2 จะสร้างวงกลมกว้าง 40 พิกเซลที่มีเส้นกึ่งกลางแนวนอนเดียวกับลูกศรตัวอย่าง แต่อยู่ทางด้านขวาของขอบด้านขวาของลูกศร 100 พิกเซล (1,270,000 EMU) พิกัด X ของวงกลมคือผลรวมของพิกัด X ของหัวลูกศร ความกว้างของหัวลูกศร และ 100 พิกเซล การบังคับให้จัดแนวตามเส้นกึ่งกลางสำหรับวงกลมใหม่ต้องคำนึงถึงความสูงของทั้งลูกศรและวงกลม พิกัด Y ของวงกลมคือพิกัด Y ของลูกศรบวกครึ่งความสูงของลูกศรลบครึ่งความสูงของวงกลม ในกรณีทั้ง 2 กรณี คุณต้องพิจารณาปัจจัยการปรับขนาดที่เชื่อมโยงกับลูกศรด้วย เนื่องจากปัจจัยเหล่านี้ส่งผลต่อความกว้างและความสูงที่แสดงผลของลูกศร ดังนั้นพิกัดของวงกลมจึงมีดังนี้
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
ต่อไปนี้คือโปรโตคอลคำขอเพื่อจัดแนวองค์ประกอบหนึ่งกับอีกองค์ประกอบหนึ่ง
POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{ "requests": [ { "createShape": { "shapeType": "RECTANGLE", "elementProperties": { "pageObjectId": PAGE_ID, "size": { "width": { "magnitude": 100, "unit": "PT" }, "height": { "magnitude": 50, "unit": "PT" } }, "transform": { "scaleX": 1, "scaleY": 1, "translateX": 2000000, "translateY": 1185000, "unit": "EMU" } } } }, { "createShape": { "shapeType": "ELLIPSE", "elementProperties": { "pageObjectId": PAGE_ID, "size": { "width": { "magnitude": 40, "unit": "PT" }, "height": { "magnitude": 40, "unit": "PT" } }, "transform": { "scaleX": 1, "scaleY": 1, "translateX": 4170000, "translateY": 476000, "unit": "EMU" } } } } ] }
ย้ายองค์ประกอบ
ตัวอย่างโค้ดต่อไปนี้ presentations.batchUpdate
แสดงวิธีใช้เมธอด UpdatePageElementTransformRequest
เพื่อแปลองค์ประกอบหน้ารูปร่างลูกศรตัวอย่างใน 2 วิธีที่แตกต่างกัน
คําขอแรกในชุดจะย้ายลูกศรไปยังพิกัด (X,Y) = (2000000, 150000) EMU (โดยใช้การแปลสัมบูรณ์
applyMode
)
คําขอที่ 2 ในชุดจะย้ายลูกศรจากจุดนั้น โดยครั้งนี้จะย้ายไปทางขวา 40,000 EMU และขึ้น 35,000 EMU (โดยใช้การแปลสัมพัทธ์ applyMode
)
เมทริกซ์ transformation1 ที่ใช้สร้างขึ้นเพื่อหลีกเลี่ยงการเปลี่ยนแปลงขนาดและการวางแนวขององค์ประกอบ
หลังจากดำเนินการตามคำขอทั้ง 2 รายการแล้ว มุมซ้ายบนของรูปลูกศรจะอยู่ที่พิกัด EMU (X,Y) = (2040000, 115000)
ต่อไปนี้คือโปรโตคอลคำขอย้ายองค์ประกอบ
POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{ "requests": [ { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "ABSOLUTE", "transform": { "scaleX": 0.3, "scaleY": 0.12, "translateX": 2000000, "translateY": 150000, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": 40000, "translateY": -35000, "unit": "EMU" } } } ] }
สะท้อนองค์ประกอบ
ตัวอย่างโค้ดต่อไปนี้
presentations.batchUpdate
แสดงวิธีใช้วิธี UpdatePageElementTransformRequest
เพื่อแสดงองค์ประกอบหน้ารูปลูกศรตัวอย่างในแนวนอนตามจุดศูนย์กลางขององค์ประกอบนั้น โดยไม่เปลี่ยนแปลงตำแหน่งในหน้าเว็บหรือการปรับขนาด
ซึ่งทำได้โดยใช้การเปลี่ยนรูปแบบการสะท้อนแสงพื้นฐานในเฟรมอ้างอิงขององค์ประกอบ เพื่อความชัดเจน ระบบจะแสดงการเปลี่ยนเฟรมอ้างอิงและการเปลี่ยนเฟรมสะท้อนด้วยการเรียกใช้เมธอด UpdatePageElementTransformRequest
แยกกัน 3 ครั้ง แต่การคำนวณผลคูณของเมทริกซ์การเปลี่ยนรูปแบบเหล่านี้ล่วงหน้าแล้วนำไปใช้กับคำขอเดียวจะมีประสิทธิภาพมากกว่า
สำหรับการเปลี่ยนรูปแบบการแปล ระบบจะย้ายจุดศูนย์กลางของรูปลูกศรไปยังต้นทางและจากต้นทาง ค่าพารามิเตอร์จะแสดงเป็นการคำนวณเพื่อความชัดเจน
ต่อไปนี้คือโปรโตคอลคำขอเพื่อแสดงองค์ประกอบ
POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{ "requests": [ { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": -2000000 - 0.5 * 0.3 * 3000000, "translateY": -550000 - 0.5 * 0.12 * 3000000, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": -1, "scaleY": 1, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": 2000000 + 0.5 * 0.3 * 3000000, "translateY": 550000 + 0.5 * 0.12 * 3000000, "unit": "EMU" } } } ] }
ปรับขนาดองค์ประกอบ
ตัวอย่างโค้ดต่อไปนี้
presentations.batchUpdate
แสดงวิธีใช้เมธอด UpdatePageElementTransformRequest
เพื่อปรับขนาดองค์ประกอบหน้ารูปลูกศรตัวอย่างให้กว้างขึ้น 50% และมีความสูงเพียง 80% ของความสูงปัจจุบัน ขณะที่รักษาจุดศูนย์กลางของลูกศรไว้ที่ตำแหน่งเดิมและคงการวางแนวไว้
ซึ่งทำได้โดยใช้การเปลี่ยนรูปแบบการขยายขนาดพื้นฐานในเฟรมอ้างอิงขององค์ประกอบ เพื่อความชัดเจน ระบบจะแสดงการเปลี่ยนเฟรมอ้างอิงและการปรับขนาดด้วยการเรียกใช้เมธอด UpdatePageElementTransformRequest
แยกกัน 3 ครั้ง แต่วิธีการคำนวณผลคูณของเมทริกซ์การเปลี่ยนรูปแบบเหล่านี้ล่วงหน้าแล้วนำไปใช้กับคำขอเดียวจะมีประสิทธิภาพมากกว่า
สำหรับการเปลี่ยนรูปแบบการแปล ระบบจะย้ายจุดศูนย์กลางของรูปลูกศรไปยังต้นทางและจากต้นทาง ค่าพารามิเตอร์จะแสดงเป็นการคำนวณเพื่อความชัดเจน
ต่อไปนี้คือโปรโตคอลคำขอสำหรับการปรับขนาดองค์ประกอบ
POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{ "requests": [ { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": -2000000 - 0.5 * 0.3 * 3000000, "translateY": -550000 - 0.5 * 0.12 * 3000000, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1.5, "scaleY": 0.8, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": 2000000 + 0.5 * 0.3 * 3000000, "translateY": 550000 + 0.5 * 0.12 * 3000000, "unit": "EMU" } } } ] }
หมุนองค์ประกอบรอบจุดศูนย์กลาง
ตัวอย่างโค้ดต่อไปนี้
presentations.batchUpdate
แสดงวิธีใช้วิธี UpdatePageElementTransformRequest
เพื่อหมุนองค์ประกอบหน้ารูปลูกศรตัวอย่าง 35 องศาทวนเข็มนาฬิกา โดยที่จุดศูนย์กลางของลูกศรอยู่ในตําแหน่งเดิมและคงขนาดไว้
ซึ่งทำได้โดยใช้การเปลี่ยนรูปแบบการหมุนพื้นฐานในเฟรมอ้างอิงขององค์ประกอบ เพื่อความชัดเจน ระบบจะแสดงการเปลี่ยนเฟรมอ้างอิงและการหมุนด้วยการเรียกใช้เมธอด UpdatePageElementTransformRequest
แยกกัน 3 ครั้ง แต่การคำนวณผลคูณของเมทริกซ์การเปลี่ยนรูปแบบเหล่านี้ล่วงหน้าแล้วนำไปใช้กับคำขอเดียวจะมีประสิทธิภาพมากกว่า
สำหรับการเปลี่ยนรูปแบบการแปล ระบบจะย้ายจุดศูนย์กลางของรูปลูกศรไปยังต้นทางและจากต้นทาง ค่าพารามิเตอร์จะแสดงเป็นการคำนวณเพื่อความชัดเจน
ต่อไปนี้คือโปรโตคอลคำขอเพื่อหมุนองค์ประกอบรอบจุดศูนย์กลาง
POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{ "requests": [ { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": -2000000 - 0.5 * 0.3 * 3000000, "translateY": -550000 - 0.5 * 0.12 * 3000000, "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": cos(35 * (pi/180)), "scaleY": cos(35 * (pi/180)), "shearX": sin(35 * (pi/180)), "shearY": -sin(35 * (pi/180)), "unit": "EMU" } } }, { "updatePageElementTransform": { "objectId": PAGE_ELEMENT_ID, "applyMode": "RELATIVE", "transform": { "scaleX": 1, "scaleY": 1, "translateX": 2000000 + 0.5 * 0.3 * 3000000, "translateY": 550000 + 0.5 * 0.12 * 3000000, "unit": "EMU" } } } ] }