تتيح لك Google Slides API التحكّم في موضع عنصر
PageElement
(مربّعات النص والصور والجداول والأشكال الأساسية) وحجمه واتجاهه على الصفحة، مع إبقاء الخطوط
مستقيمة والحفاظ على النقاط والخطوط المتوازية. وتُعرف هذه باسم التحويلات
التناسبية. توضّح الأمثلة الواردة هنا بعض عمليات تحويل عناصر الصفحة
الشائعة باستخدام الإجراء
presentations.batchUpdate
.
تستخدِم هذه الأمثلة المتغيّرات التالية:
- PRESENTATION_ID: يشير إلى المكان الذي تقدّم فيه معرّف العرض التقديمي. يمكنك معرفة قيمة هذا المعرّف من عنوان URL للعرض التقديمي.
- PAGE_ID: يشير إلى المكان الذي تقدّم فيه معرّف عنصر الصفحة. يمكنك استرجاع القيمة الخاصة بهذا العنوان من عنوان URL أو باستخدام طلب قراءة واجهة برمجة التطبيقات.
- PAGE_ELEMENT_ID: يشير إلى المكان الذي تقدّم فيه رقم تعريف كائن عنصر الصفحة. يمكنك تحديد هذا المعرّف للعناصر التي تنشئها (مع بعض القيود) أو السماح لواجهة برمجة التطبيقات Slides API بإنشاء معرّف تلقائيًا. يمكن استرداد أرقام تعريف العناصر من خلال طلب قراءة واجهة برمجة التطبيقات.
يتم تقديم هذه الأمثلة كطلبات HTTP لتكون محايدة من حيث اللغة. للتعرّف على كيفية تنفيذ تعديل مجمّع بلغات مختلفة باستخدام مكتبات عملاء Google API، اطّلِع على مقالة إضافة أشكال وكلمات.
مثال على شكل السهم
في ما يلي أمثلة على عناصر صفحات على شكل سهام
بالحجم وبيانات التحويل التالية (يمكن العثور عليها باستخدام طلب presentations.pages.get
الطريقة). يستخدِم مثال الشكل قياس
unit
وحدة القياس الإنجليزية (EMU) و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
لإنشاء أشكال جديدة في المواضع الصحيحة التي تكون محاذية
لمثال شكل السهم على الصفحة. في كلتا الحالتَين، يجب احتساب إحداثيات X وY
للركن العلوي الأيمن من الشكل الجديد.
ينشئ الطلب الأول مستطيلاً أبعاده 100 x 50 نقطة يتم محاذاته مع حدود السهم اليمنى، ولكن يتم وضعه على مسافة 50 نقطة (50 * 12,700 = 635,000 وحدة EMU) أسفل الحافة العلوية للسهم. يجب أن يكون إحداثي X للمستطيل الجديد هو نفسه إحداثي X للسهم من أجل الحفاظ على محاذاة حدوده اليسرى. الإحداثي Y هو نفسه إحداثي Y للسهم بالإضافة إلى 50 نقطة، لأنّه يتم قياس المسافة من أعلى السهم. إحداثيات المستطيل هي لذلك:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
ينشئ الطلب الثاني دائرة بعرض 40 نقطة لها خط مركزي أفقي مماثل لخط مثال السهم، ولكن يتم وضعها على مسافة 100 نقطة (1,270,000 وحدة EMU) على يسار الحافة اليمنى للسهم. الإحداثي X للدائرة هو مجموع إحداثي X للسهم وعرض السهم و100 نقطة. يتطلّب فرض محاذاة خطوط مركز الدائرة الجديدة مراعاة ارتفاع كلّ من السهم والدائرة. الإحداثي Y للدائرة هو الإحداثي Y للسهم بالإضافة إلى نصف ارتفاع السهم مطروحًا منه نصف ارتفاع الدائرة. في كلتا الحالتَين، يجب أيضًا مراعاة عوامل التكبير/التصغير المرتبطة بالسهم، لأنّها تؤثر في العرض والارتفاع المعروضَين للسهم. بالتالي، فإنّ إحداثيات الدائرة هي:
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
لترجمة عنصر الصفحة مثال شكل السهم بطريقتين مختلفتين.
ينقل الطلب الأول في الحزمة السهم إلى الإحداثيات (X,Y) = (2000000, 150000)
EMU (باستخدام ترجمة مطلقة
applyMode
).
ينقل الطلب الثاني في الحزمة السهم من هناك، هذه المرة 40,000 EMU
إلى اليمين و35,000 EMU للأعلى (باستخدام ترجمة نسبية applyMode
).
تم إنشاء مصفوفات التحويل1 المستخدَمة
لتجنُّب تغيير حجم العنصر واتجاهه.
بعد تنفيذ كلا الطلبَين، يقع أعلى يمين السهم في الإحداثيات (X,Y) = (2040000, 115000) وفقًا لنظام EMU.
في ما يلي بروتوكول الطلب لنقل عنصر:
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
،
ولكن من الأفضل احتساب منتج مصفوفات التحويل هذه مسبقًا ثم تطبيق هذا المنتج كطلب واحد.
بالنسبة إلى عمليات التحويل الترجمة، يتم نقل مركز شكل السهم من نقطة الأصل وإليها. يتم التعبير عن قيم المَعلمات كعمليات حسابية للوضوح.
في ما يلي بروتوكول الطلب لعرض عنصر:
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
،
ولكن من الأفضل احتساب منتج مصفوفات التحويل هذه مسبقًا ثم تطبيق هذا المنتج كطلب واحد.
بالنسبة إلى عمليات التحويل الترجمة، يتم نقل مركز شكل السهم من نقطة الأصل وإليها. يتم التعبير عن قيم المَعلمات كعمليات حسابية للوضوح.
في ما يلي بروتوكول الطلب لتغيير حجم عنصر:
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
،
ولكن من الأفضل احتساب منتج مصفوفات التحويل هذه مسبقًا ثم تطبيق هذا المنتج كطلب واحد.
بالنسبة إلى عمليات التحويل الترجمة، يتم نقل مركز شكل السهم من نقطة الأصل وإليها. يتم التعبير عن قيم المَعلمات كعمليات حسابية للوضوح.
في ما يلي بروتوكول الطلب لتدوير عنصر حول مركزه:
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" } } } ] }