গুগল অ্যাপস স্ক্রিপ্ট ব্যবহারকারীর ডেটা, অন্যান্য গুগল সিস্টেম এবং বহিরাগত সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য ৩০টিরও বেশি বিল্ট-ইন পরিষেবা প্রদান করে। এই পরিষেবাগুলি জাভাস্ক্রিপ্টের স্ট্যান্ডার্ড Math অবজেক্টের মতো গ্লোবাল অবজেক্ট হিসাবে সরবরাহ করা হয়। উদাহরণস্বরূপ, যেমন Math random() এবং PI এর মতো ধ্রুবক অফার করে, অ্যাপস স্ক্রিপ্টের স্প্রেডশিট পরিষেবা openById(id) , ক্লাস (চাইল্ড অবজেক্ট) যেমন Range এবং enums যেমন DataValidationCriteria মতো পদ্ধতি অফার করে।
Google Workspace পণ্য নিয়ন্ত্রণকারী পরিষেবাগুলির রেফারেন্স ডকুমেন্টেশনগুলি এই সাইটের সাইডবারে "রেফারেন্স" শিরোনামের অধীনে "Google Workspace পরিষেবা" বিভাগে সংগ্রহ করা হয়। ইউটিলিটি পরিষেবাগুলি (ব্যবহারকারী ইন্টারফেস তৈরি করা, XML পার্স করা বা লগ ডেটা লেখার মতো জিনিসগুলির জন্য) "স্ক্রিপ্ট পরিষেবা" বিভাগে সংগ্রহ করা হয়।
আধুনিক জাভাস্ক্রিপ্ট বৈশিষ্ট্য
অ্যাপস স্ক্রিপ্ট দুটি জাভাস্ক্রিপ্ট রানটাইম সমর্থন করে: আধুনিক V8 রানটাইম এবং মজিলার রাইনো জাভাস্ক্রিপ্ট ইন্টারপ্রেটার দ্বারা চালিত একটি পুরানো রানটাইম।
V8 রানটাইম আধুনিক ECMAScript সিনট্যাক্স এবং বৈশিষ্ট্যগুলিকে সমর্থন করে। Rhino রানটাইমটি পুরানো JavaScript 1.6 স্ট্যান্ডার্ডের উপর ভিত্তি করে তৈরি, এবং 1.7 এবং 1.8 এর কিছু বৈশিষ্ট্যও রয়েছে। আপনি আপনার স্ক্রিপ্টের সাথে কোন রানটাইম ব্যবহার করবেন তা স্বাধীনভাবে বেছে নিতে পারেন, তবে V8 রানটাইমটি জোরালোভাবে সুপারিশ করা হয়।
প্রতিটি রানটাইম আপনার স্ক্রিপ্টে উপলব্ধ জাভাস্ক্রিপ্ট ক্লাস এবং অবজেক্টগুলিকে সমর্থন করে, বিল্ট-ইন এবং উন্নত গুগল পরিষেবাগুলি ছাড়াও। আপনার স্ক্রিপ্টগুলি Array , Date , RegExp ইত্যাদির মতো সাধারণ অবজেক্টগুলির পাশাপাশি Math এবং Object গ্লোবাল অবজেক্টগুলিও ব্যবহার করতে পারে।
স্বয়ংক্রিয়ভাবে সম্পূর্ণ করার পদ্ধতি ব্যবহার করা হচ্ছে
স্ক্রিপ্ট এডিটরটিতে একটি "কন্টেন্ট অ্যাসিস্ট" বৈশিষ্ট্য রয়েছে, যা সাধারণত "অটোকমপ্লিট" নামে পরিচিত, যা স্ক্রিপ্টের বর্তমান প্রেক্ষাপটে বৈধ গ্লোবাল অবজেক্টের পাশাপাশি পদ্ধতি এবং এনামগুলি প্রকাশ করে। যখনই আপনি কোনও গ্লোবাল অবজেক্ট, এনাম বা মেথড কলের পরে একটি পিরিয়ড টাইপ করেন যা একটি অ্যাপস স্ক্রিপ্ট ক্লাস ফেরত দেয় তখন অটোকমপ্লিট পরামর্শগুলি স্বয়ংক্রিয়ভাবে উপস্থিত হয়। উদাহরণস্বরূপ:
- যদি আপনি একটি গ্লোবাল অবজেক্টের পুরো নাম টাইপ করেন অথবা অটোকম্পলিট থেকে একটি নির্বাচন করেন, তারপর
.(a period) টাইপ করুন, তাহলে আপনি সেই ক্লাসের জন্য সমস্ত পদ্ধতি এবং এনাম দেখতে পাবেন। - আপনি যদি কয়েকটি অক্ষর টাইপ করেন, তাহলে আপনি সেই অক্ষর দিয়ে শুরু হওয়া সমস্ত বৈধ পরামর্শ দেখতে পাবেন।
বিশ্বব্যাপী বস্তু বোঝা
প্রতিটি পরিষেবা কমপক্ষে একটি গ্লোবাল (শীর্ষ-স্তরের) অবজেক্ট সরবরাহ করে; উদাহরণস্বরূপ, Gmail পরিষেবাটি কেবলমাত্র GmailApp অবজেক্ট থেকে অ্যাক্সেস করা হয়। কিছু পরিষেবা একাধিক গ্লোবাল অবজেক্ট সরবরাহ করে; উদাহরণস্বরূপ, বেস পরিষেবাটিতে চারটি গ্লোবাল অবজেক্ট রয়েছে: Browser , Logger , MimeType এবং Session ।
কলিং পদ্ধতি
প্রায় সকল বিল্ট-ইন বা অ্যাডভান্সড সার্ভিসের গ্লোবাল অবজেক্টের মধ্যে থাকে এমন পদ্ধতি যা ডেটা বা অ্যাপস স্ক্রিপ্ট ক্লাস ফেরত দেয়। স্ক্রিপ্টগুলি এই ফর্ম্যাটে পদ্ধতি কল করে:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
উদাহরণস্বরূপ, একটি স্ক্রিপ্ট Gmail পরিষেবার sendEmail(recipient, subject, body) পদ্ধতিতে কল করে একটি ইমেল পাঠাতে পারে যেমন:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
যদি একটি পদ্ধতি অন্য একটি Apps Script ক্লাস ফেরত দেয়, তাহলে আপনি একটি লাইনে পদ্ধতি কল চেইন করতে পারেন। (রিটার্নের ধরণগুলি স্বয়ংক্রিয়ভাবে সম্পূর্ণ এবং একটি পদ্ধতির রেফারেন্স ডকুমেন্টেশন উভয় ক্ষেত্রেই দেখানো হয়।) উদাহরণস্বরূপ, 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);