Google Apps স্ক্রিপ্ট ব্যবহারকারীর ডেটা, অন্যান্য Google সিস্টেম এবং বাহ্যিক সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য 30টিরও বেশি অন্তর্নির্মিত পরিষেবা সরবরাহ করে৷ এই পরিষেবাগুলি জাভাস্ক্রিপ্টের স্ট্যান্ডার্ড Math
অবজেক্টের মতো বিশ্বব্যাপী অবজেক্ট হিসাবে প্রদান করা হয়। উদাহরণস্বরূপ, Math
যেমন random()
এবং PI
এর মতো ধ্রুবকগুলির মতো পদ্ধতিগুলি অফার করে, অ্যাপস স্ক্রিপ্টের স্প্রেডশীট পরিষেবাটি openById(id)
, শ্রেণির (চাইল্ড অবজেক্ট) এর মতো Range
এবং DataValidationCriteria
মতো এনামগুলির মতো পদ্ধতিগুলি অফার করে।
নিয়ন্ত্রণকারী পরিষেবাগুলির জন্য রেফারেন্স ডকুমেন্টেশনGoogle Workspace পণ্য সংগ্রহ করা হয় "Google Workspace এই সাইটের সাইডবারে "রেফারেন্স" শিরোনামের অধীনে পরিষেবাগুলি" বিভাগ। ইউটিলিটি পরিষেবাগুলি (ইউজার ইন্টারফেস তৈরি করা, এক্সএমএল পার্স করা বা লগ ডেটা লেখার মতো জিনিসগুলির জন্য) "স্ক্রিপ্ট পরিষেবা" বিভাগে সংগ্রহ করা হয়।
আধুনিক জাভাস্ক্রিপ্ট বৈশিষ্ট্য
Apps Script দুটি জাভাস্ক্রিপ্ট রানটাইম সমর্থন করে: আধুনিক V8 রানটাইম এবং একটি পুরানোটি Mozilla এর Rhino JavaScript ইন্টারপ্রেটার দ্বারা চালিত।
V8 রানটাইম আধুনিক ECMAScript সিনট্যাক্স এবং বৈশিষ্ট্য সমর্থন করে। রাইনো রানটাইম পুরানো জাভাস্ক্রিপ্ট 1.6 স্ট্যান্ডার্ডের উপর ভিত্তি করে, এছাড়াও 1.7 এবং 1.8 এর কিছু বৈশিষ্ট্য। আপনি আপনার স্ক্রিপ্টের সাথে কোন রানটাইম ব্যবহার করবেন তা স্বাধীনভাবে চয়ন করতে পারেন, তবে V8 রানটাইম দৃঢ়ভাবে সুপারিশ করা হয়।
প্রতিটি রানটাইম জাভাস্ক্রিপ্ট ক্লাস এবং অবজেক্টগুলিকে সমর্থন করে যা অন্তর্নির্মিত এবং উন্নত Google পরিষেবাগুলি ছাড়াও আপনার স্ক্রিপ্টে উপলব্ধ। আপনার স্ক্রিপ্টগুলি সাধারণ বস্তু যেমন Array
, Date
, RegExp
, ইত্যাদি ব্যবহার করতে পারে, সেইসাথে Math
এবং Object
গ্লোবাল অবজেক্ট ব্যবহার করতে পারে।
স্বয়ংসম্পূর্ণ ব্যবহার করে
স্ক্রিপ্ট এডিটর একটি "বিষয়বস্তু সহায়তা" বৈশিষ্ট্য প্রদান করে, যাকে সাধারণত "স্বয়ংসম্পূর্ণ" বলা হয়, যা স্ক্রিপ্টের বর্তমান প্রেক্ষাপটে বৈধ পদ্ধতি এবং এনামগুলির পাশাপাশি বিশ্বব্যাপী বস্তুগুলিকে প্রকাশ করে৷ যখনই আপনি কোনো গ্লোবাল অবজেক্ট, এনাম বা মেথড কলের পরে একটি পিরিয়ড টাইপ করলেই স্বয়ংক্রিয়ভাবে স্বয়ংসম্পূর্ণ পরামর্শগুলি উপস্থিত হয় যা একটি Apps স্ক্রিপ্ট ক্লাস ফেরত দেয়। যেমন:
- আপনি যদি একটি বিশ্বব্যাপী বস্তুর পুরো নাম টাইপ করেন বা স্বয়ংসম্পূর্ণ থেকে একটি নির্বাচন করেন, তাহলে টাইপ করুন
.
(একটি সময়কাল), আপনি সেই শ্রেণীর জন্য সমস্ত পদ্ধতি এবং enums দেখতে পাবেন। - আপনি যদি কয়েকটি অক্ষর টাইপ করেন, আপনি সেই অক্ষর দিয়ে শুরু হওয়া সমস্ত বৈধ পরামর্শ দেখতে পাবেন।
গ্লোবাল অবজেক্ট বোঝা
প্রতিটি পরিষেবা অন্তত একটি বিশ্বব্যাপী (শীর্ষ-স্তরের) বস্তু প্রদান করে; উদাহরণস্বরূপ, Gmail পরিষেবাটি শুধুমাত্র GmailApp
অবজেক্ট থেকে অ্যাক্সেস করা হয়। কিছু পরিষেবা একাধিক বিশ্বব্যাপী বস্তু প্রদান করে; উদাহরণ স্বরূপ, বেস সার্ভিসে চারটি গ্লোবাল অবজেক্ট রয়েছে: Browser
, Logger
, MimeType
এবং Session
।
কলিং পদ্ধতি
প্রায় সমস্ত বিল্ট-ইন বা উন্নত পরিষেবার গ্লোবাল অবজেক্টের মধ্যে রয়েছে এমন পদ্ধতি যা ডেটা ফেরত দেয় বা একটি Apps স্ক্রিপ্ট ক্লাস। স্ক্রিপ্ট এই বিন্যাসে পদ্ধতি কল করে:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
উদাহরণস্বরূপ, একটি স্ক্রিপ্ট Gmail পরিষেবার sendEmail(recipient, subject, body)
পদ্ধতিতে কল করে একটি ইমেল পাঠাতে পারে:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
যদি একটি পদ্ধতি অন্য অ্যাপস স্ক্রিপ্ট ক্লাস ফেরত দেয়, আপনি একটি লাইনে চেইন পদ্ধতি কল করতে পারেন। (রিটার্নের ধরনগুলি স্বয়ংসম্পূর্ণ এবং একটি পদ্ধতির রেফারেন্স ডকুমেন্টেশন উভয় ক্ষেত্রেই দেখানো হয়।) উদাহরণস্বরূপ, DocumentApp.create()
পদ্ধতিটি একটি Document
প্রদান করে; এইভাবে, কোডের নিম্নলিখিত দুটি বিভাগ সমতুল্য:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()
.appendParagraph('New paragraph.');
শিশু ক্লাস অ্যাক্সেস করা
প্রতিটি পরিষেবাতে এক বা একাধিক চাইল্ড ক্লাস অন্তর্ভুক্ত থাকে যা বিশ্বব্যাপী বস্তুর মতো শীর্ষ স্তর থেকে অ্যাক্সেস করা যায় না। আপনি এই ক্লাসগুলি তৈরি করার জন্য new
কীওয়ার্ড ব্যবহার করতে পারবেন না, যেমন আপনি স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট ক্লাস যেমন Date
; আপনি শুধুমাত্র একটি পদ্ধতিতে কল করে একটি শিশু ক্লাস অ্যাক্সেস করতে পারেন যা এটি ফেরত দেয়। আপনি যদি নিশ্চিত না হন যে কীভাবে একটি নির্দিষ্ট ক্লাস অ্যাক্সেস করবেন, পরিষেবার রেফারেন্স ডকুমেন্টেশনের জন্য রুট পৃষ্ঠাটি দেখুন এবং এমন একটি পদ্ধতি সন্ধান করুন যা আপনার পছন্দের ক্লাসটি ফেরত দেয়।
ইন্টারফেস সঙ্গে লেনদেন
মুষ্টিমেয় কিছু পরিষেবার মধ্যে বিশেষ ক্লাস রয়েছে যেগুলিকে রেফারেন্স ডকুমেন্টেশনে "ইন্টারফেস" হিসাবে লেবেল করা হয়েছে। এই পদ্ধতির জন্য রিটার্ন টাইপ হিসাবে ব্যবহৃত জেনেরিক ক্লাসগুলি যা আগে থেকে সুনির্দিষ্ট প্রকার নির্ধারণ করতে পারে না; উদাহরণস্বরূপ, নথি পরিষেবা পদ্ধতি Body.getChild(childIndex)
একটি জেনেরিক Element
অবজেক্ট প্রদান করে। Element
হল একটি ইন্টারফেস যা অন্য কোন শ্রেণীর প্রতিনিধিত্ব করে, সম্ভবত একটি Paragraph
বা Table
। ইন্টারফেস অবজেক্ট খুব কমই তাদের নিজস্ব কাজে লাগে; পরিবর্তে, আপনি সাধারণত Element.asParagraph()
এর মতো একটি পদ্ধতিতে কল করতে চান বস্তুটিকে একটি সুনির্দিষ্ট ক্লাসে ফেরত দিতে।
enums সঙ্গে কাজ
বেশিরভাগ পরিষেবাতে নামযুক্ত মানগুলির কয়েকটি এনাম (গণিত প্রকার) অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, কোন ব্যবহারকারীদের কোন ফাইল বা ফোল্ডারে অ্যাক্সেস আছে তা নির্ধারণ করতে ড্রাইভ পরিষেবা enums Access
এবং Permission
ব্যবহার করে। প্রায় সব ক্ষেত্রে, আপনি গ্লোবাল অবজেক্ট থেকে এই enums অ্যাক্সেস. উদাহরণস্বরূপ, Folder.setSharing(accessType, permissionType)
পদ্ধতিতে একটি কল এইরকম দেখায়:
// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);