একটি পেজ এলিমেন্টের আকার এবং অবস্থান পেতে ও পরিবর্তন করতে দুটি ভিন্ন উপায় রয়েছে:
- এর গেটার এবং সেটার ফাংশন ব্যবহার করে আকার ও অবস্থান নির্ধারণ করা হয়।
- এর অন্তর্নিহিত আকার অপরিবর্তিত রেখে এর
getTransform()এবংsetTransform()ফাংশন ব্যবহার করে এর অ্যাফাইন ট্রান্সফর্মকে নিয়ন্ত্রণ করা।
পৃষ্ঠা উপাদানের বৈশিষ্ট্যগুলি পড়ুন

চিত্রে যেমন দেখানো হয়েছে, যখন কোনো রেন্ডার করা পেজ এলিমেন্টের কোনো ঘূর্ণন থাকে না, তখন তার বাউন্ডিং বক্সের সাপেক্ষে আকার এবং অবস্থান পরিমাপ করা হয়:
- বাম এবং শীর্ষ : পৃষ্ঠার উপরের বাম কোণা থেকে অপরিবর্তিত বাউন্ডিং বক্সের উপরের বাম কোণা পর্যন্ত পরিমাপ করা হয়। মানগুলো পড়ার জন্য
getLeft()এবংgetTop()ব্যবহার করুন। - প্রস্থ এবং উচ্চতা : অপরিবর্তিত বাউন্ডিং বক্সের প্রস্থ এবং উচ্চতা। মানগুলো জানতে
getWidth()এবংgetHeight()ব্যবহার করুন। - ঘূর্ণন : বাউন্ডিং বক্সের কেন্দ্রের চারপাশে উল্লম্ব রেখার সাপেক্ষে ঘড়ির কাঁটার দিকে ঘূর্ণন। মানটি জানতে
getRotation()ব্যবহার করুন।
সমস্ত দৈর্ঘ্য পয়েন্টে (pt) পরিমাপ করা হয়। ঘূর্ণন ডিগ্রিতে (°) পরিমাপ করা হয়।
পৃষ্ঠার উপাদানের বৈশিষ্ট্য সেট করুন
insertShape() এর মতো কোনো insert মেথড ব্যবহার করে একটি পেজ এলিমেন্ট তৈরি করার সময় তার আকার এবং অবস্থান নির্ধারণ করুন। একটি বিদ্যমান শেপের জন্য, আপনি তার আকার, অবস্থান এবং ঘূর্ণন নির্ধারণ করতে পারেন; এছাড়াও, কোনো এলিমেন্টের আকার পরিবর্তন করতে বা তার কোনো একটি প্রান্ত বরাবর সেটিকে প্রতিফলিত করতে আপনি তার স্কেলিংও সেট করতে পারেন।
সৃষ্টির সময়
পেজ এলিমেন্ট তৈরি করার সময় অবস্থান এবং আকারের তথ্য প্রদান করুন।
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
+ shape.getTop() + 'pt; Width: '
+ shape.getWidth() + 'pt; Height: '
+ shape.getHeight() + 'pt; Rotation: '
+ shape.getRotation() + ' degrees.');
পূর্ববর্তী স্ক্রিপ্টটি সক্রিয় প্রেজেন্টেশনের প্রথম স্লাইডে নির্দিষ্ট অবস্থান ও আকারে একটি শেপ তৈরি করে এবং শেপটির অবস্থান ও আকারের তথ্য পড়ে। প্রত্যাশিত লগটি হলো:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
আকার, অবস্থান এবং ঘূর্ণন
পেজ এলিমেন্ট তৈরির পরে তার আকার ও অবস্থান আপডেট করুন:
- অপরিবর্তিত বাউন্ডিং বক্সের উপরের বাম কোণার অবস্থান নির্ধারণ করতে
setLeft()এবংsetTop()ব্যবহার করুন। - বাউন্ডিং বক্সের রেন্ডারকৃত প্রস্থ ও উচ্চতা নির্ধারণ করতে
setWidth()এবংsetHeight()ব্যবহার করুন। - বাউন্ডিং বক্সকে তার কেন্দ্রবিন্দু থেকে ঘড়ির কাঁটার দিকে ঘোরানোর জন্য
setRotation()ব্যবহার করুন।
নিম্নলিখিত স্ক্রিপ্টটি সক্রিয় প্রেজেন্টেশনের প্রথম স্লাইডে একটি শেপ তৈরি করে, সেটার ব্যবহার করে এর অবস্থান, আকার এবং ঘূর্ণন আপডেট করে, এবং শেপটির অবস্থান ও আকারের তথ্য পড়ে।
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
+ 'pt; Top: ' + shape.getTop()
+ 'pt; Width: ' + shape.getWidth()
+ 'pt; Height: ' + shape.getHeight()
+ 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');
প্রত্যাশিত লগটি হলো:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
আকার, অবস্থান এবং ঘূর্ণন সেটারগুলো যেকোনো ক্রমে বা সমন্বয়ে ব্যবহার করা যেতে পারে। পূর্ববর্তী স্ক্রিপ্টের তৃতীয় লাইনটি নিম্নলিখিত স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করলে একই ফলাফল পাওয়া যায়:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
পৃষ্ঠার একটি উপাদান স্কেল করুন
কোনো আকৃতির আকারকে একটি নির্দিষ্ট মানে সেট করার জন্য setWidth() এবং setHeight() ব্যবহার করার পরিবর্তে, scaleWidth() এবং scaleHeight() ব্যবহার করে একটি আপেক্ষিক স্কেলিং ফ্যাক্টরের মাধ্যমে পেজের কোনো এলিমেন্টকে প্রসারিত বা সংকুচিত করা যায়।
shape.scaleHeight(0.5).scaleWidth(2);
নিম্নলিখিত চিত্রে দেখানো হয়েছে কিভাবে পূর্ববর্তী কোডটি একটি ৪৫° কোণে ঘোরানো বর্গাকার আকৃতির উপর কাজ করে। লক্ষ্য করুন যে, স্কেলিং করার সময় বাউন্ডিং বক্সের উপরের বাম কোণটি স্থির থাকে।

পৃষ্ঠার একটি উপাদান প্রতিফলিত করুন
scaleWidth() এবং scaleHeight() ফাংশনের আর্গুমেন্ট ঋণাত্মক হতে পারে, যার ফলে এগুলো ব্যবহার করে কোনো পেজ এলিমেন্টকে আনুভূমিকভাবে বা উল্লম্বভাবে উল্টানো যায়।
// Flip horizontally along the left edge of the bounding box.
shape.scaleWidth(-1);
// Flip vertically along the top edge of the bounding box.
shape.scaleHeight(-1);
নিম্নলিখিত চিত্রে দেখানো হয়েছে কিভাবে পূর্ববর্তী কোডটি একটি ৪৫° কোণে ঘোরানো আকারের উপর কাজ করে। লক্ষ্য করুন যে, পৃষ্ঠা উপাদানটি তার বাউন্ডিং বক্সের একটি প্রান্ত বরাবর উল্টে যায়, কিন্তু এর কেন্দ্র বরাবর নয়।

রেখা ঘূর্ণন
পেজের অন্যান্য উপাদানের মতো, একটি লাইনের রোটেশন হলো তার ভার্টিক্যাল অ্যাঙ্গেল নয়, বরং তার বাউন্ডিং বক্সের রোটেশন। যখন আপনি নির্দিষ্ট শুরু এবং শেষ বিন্দু দিয়ে একটি লাইন তৈরি করেন, তখন তার রোটেশন সর্বদা 0° হয়। স্লাইডস UI-তে লাইনের শেষ বিন্দুগুলো ড্র্যাগ করলে তার ভার্টিক্যাল অ্যাঙ্গেলের পাশাপাশি বাউন্ডিং বক্সের আকার ও অবস্থানও পরিবর্তিত হয়, কিন্তু এর রোটেশন পরিবর্তিত হয় না। setRotation() ব্যবহার করলে লাইনের বাউন্ডিং বক্সটি রোটেট হয়, যা কার্যকরভাবে এর ভার্টিক্যাল অ্যাঙ্গেল পরিবর্তন করে। সুতরাং, দুটি লাইনের ভিজ্যুয়াল ভার্টিক্যাল অ্যাঙ্গেল একই হতে পারে, কিন্তু তাদের বাউন্ডিং বক্স ভিন্ন হওয়ায় তাদের আকার, অবস্থান এবং রোটেশনের মানও ভিন্ন হবে।
সীমাবদ্ধতা
কিছু সাইজিং ও পজিশনিং পদ্ধতি কিছু নির্দিষ্ট ধরণের পেজ এলিমেন্টের সাথে সামঞ্জস্যপূর্ণ নয়। নিচের সারণিতে সেই পদ্ধতিগুলো সংক্ষেপে তুলে ধরা হলো, যেগুলো নির্দিষ্ট ধরণের পেজ এলিমেন্টের সাথে সামঞ্জস্যপূর্ণ নয়।
| পদ্ধতি | আকৃতি | ভিডিও | টেবিল |
|---|---|---|---|
| উচ্চতা(), প্রস্থ() | ✔ | ✔ | না (শূন্য ফেরত দেয়) |
| উচ্চতা সেট করুন(), প্রস্থ সেট করুন() | ✔ | ✔ | না |
| setRotation() | ✔ | না | না |
| স্কেলহাইট(), স্কেলউইডথ() | ✔ | ✔ | না |
পেজ এলিমেন্টে শিয়ারিং থাকলে সমস্ত সাইজিং এবং পজিশনিং পদ্ধতি অপ্রত্যাশিত ফলাফল দিতে পারে। সমস্ত সীমাবদ্ধতা পরিবর্তন সাপেক্ষ। হালনাগাদ তথ্যের জন্য রেফারেন্স দেখুন।
অ্যাফাইন ট্রান্সফর্ম ব্যবহার করুন
উন্নততর নিয়ন্ত্রণের জন্য, একটি পেজ এলিমেন্টের আকার ও অবস্থান তার অন্তর্নিহিত (নেটিভ) আকার এবং অ্যাফাইন ট্রান্সফর্মের মাধ্যমেও গণনা ও সমন্বয় করা যেতে পারে।
গুগল অ্যাপস স্ক্রিপ্ট অ্যাফাইন ট্রান্সফর্ম ব্যবহারের জন্য গুগল স্লাইডস এপিআই-এর অনুরূপ একটি ইন্টারফেস প্রদান করে।
- প্রোপার্টিগুলো পড়ার জন্য, আপনি অ্যাফাইন ট্রান্সফর্ম ব্যবহার করতে পারেন, যা বর্ণনা করে একটি এলিমেন্টকে কীভাবে স্কেল, রোটেট, শিয়ার এবং পজিশন করা হয়। একটি স্লাইডে কোনো এলিমেন্টের ভিজ্যুয়াল সাইজ গণনা করার জন্য তার ট্রান্সফর্ম এবং ইনহেরেন্ট (নেটিভ) সাইজ কীভাবে ব্যবহার করতে হয়, তা জানতে ট্রান্সফর্মস দেখুন। অ্যাপস স্ক্রিপ্টে, ব্যবহার করুন:
- পেজ এলিমেন্টগুলোর সহজাত (নেটিভ) আকারের জন্য
getInherentWidth()এবংgetInherentHeight()। - পেজের এলিমেন্টগুলোর অ্যাফাইন ট্রান্সফর্মের জন্য
getTransform()।
- পেজ এলিমেন্টগুলোর সহজাত (নেটিভ) আকারের জন্য
- প্রোপার্টি পরিবর্তন করতে, আপনি স্কেলিং, রোটেশন, রিফ্লেকশন এবং আরও অনেক কিছু সম্পাদন করার জন্য অ্যাফাইন ট্রান্সফর্ম ব্যবহার করতে পারেন। অ্যাফাইন ট্রান্সফর্ম ব্যবহার করে কীভাবে পেজ এলিমেন্টগুলোর আকার ও অবস্থান নির্ধারণ করতে হয় তা জানতে, সাইজিং অ্যান্ড পজিশনিং দেখুন। অ্যাপস স্ক্রিপ্টে, ব্যবহার করুন:
- পেজের এলিমেন্টগুলোর অ্যাফাইন ট্রান্সফর্ম সেট করতে
setTransform()(যা অ্যাবসোলিউট মোডের অনুরূপ); - পেজের এলিমেন্টগুলোর বর্তমান ট্রান্সফর্মের সাথে একটি অ্যাফাইন ট্রান্সফর্ম আগে থেকে যুক্ত করতে
preconcatenateTransform()ব্যবহৃত হয় (যা RELATIVE মোডের অনুরূপ)।
- পেজের এলিমেন্টগুলোর অ্যাফাইন ট্রান্সফর্ম সেট করতে
নিম্নলিখিত স্ক্রিপ্টটি একটি আকৃতি তৈরি করে, এর ট্রান্সফর্ম নির্ধারণ করে, এর অন্তর্নিহিত আকার এবং এর অ্যাফাইন ট্রান্সফর্ম পাঠ করে।
var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
.setScaleX(2)
.setScaleY(1)
.setTranslateX(100)
.setTranslateY(200)
.build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
+ 'pt; Inherent height: '
+ shape.getInherentHeight() + 'pt.');
প্রত্যাশিত লগ আউটপুটটি হলো:
Inherent width: 236.2pt; Inherent height: 236.2pt.
ফলস্বরূপ আকৃতিটির নিম্নলিখিত রূপান্তর, রেন্ডার করা আকার এবং অবস্থান রয়েছে:
AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.