Google Apps Script, उपयोगकर्ता के डेटा, Google के अन्य सिस्टम, और बाहरी सिस्टम के साथ इंटरैक्ट करने के लिए, 30 से ज़्यादा बिल्ट-इन सेवाएं उपलब्ध कराता है. ये सेवाएं, JavaScript के स्टैंडर्ड Math ऑब्जेक्ट की तरह ग्लोबल ऑब्जेक्ट के तौर पर उपलब्ध कराई जाती हैं. उदाहरण के लिए, जिस तरह Math में random() जैसे तरीके और PI जैसे कॉन्स्टेंट उपलब्ध होते हैं उसी तरह Apps Script की Spreadsheet सेवा में openById(id) जैसे तरीके, Range जैसी क्लास (चाइल्ड ऑब्जेक्ट), और DataValidationCriteria जैसे enum उपलब्ध होते हैं.
Google Workspace के प्रॉडक्ट को कंट्रोल करने वाली सेवाओं के लिए, रेफ़रंस दस्तावेज़ इस साइट की साइडबार में "रेफ़रंस" हेडर के नीचे "Google Workspace सेवाएं" सेक्शन में इकट्ठा किए जाते हैं. उपयोगिता सेवाएं (जैसे, यूज़र इंटरफ़ेस बनाना, एक्सएमएल पार्स करना या लॉग डेटा लिखना) "स्क्रिप्ट सेवाएं" सेक्शन में इकट्ठा की जाती हैं.
JavaScript की नई सुविधाएं
Apps Script, JavaScript के दो रनटाइम के साथ काम करता है: मॉडर्न V8 रनटाइम और Mozilla के Rhino JavaScript इंटरप्रेटर पर चलने वाला पुराना रनटाइम.
V8 रनटाइम, मॉडर्न ECMAScript सिंटैक्स और सुविधाओं के साथ काम करता है. Rhino रनटाइम, JavaScript 1.6 के पुराने स्टैंडर्ड पर आधारित है. साथ ही, इसमें 1.7 और 1.8 की कुछ सुविधाएं भी शामिल हैं. अपनी स्क्रिप्ट के साथ इस्तेमाल करने के लिए रनटाइम चुनें. हालांकि, V8 रनटाइम इस्तेमाल करने का सुझाव दिया जाता है.
हर रनटाइम, JavaScript क्लास और ऑब्जेक्ट के साथ काम करता है. ये ऑब्जेक्ट, आपकी स्क्रिप्ट के लिए उपलब्ध होते हैं. इनके अलावा, बिल्ट-इन और Google की ऐडवांस सेवाएं भी उपलब्ध होती हैं. आपकी स्क्रिप्ट, Array, Date, RegExp, वगैरह जैसे सामान्य ऑब्जेक्ट के साथ-साथ Math और Object ग्लोबल ऑब्जेक्ट का इस्तेमाल कर सकती हैं.
Apps Script का कोड, Google के सर्वर पर चलता है. हालांकि, HTML-service पेज पर ऐसा नहीं होता. इसलिए, ब्राउज़र पर आधारित JavaScript की सुविधाएं, जैसे कि DOM मैनिपुलेशन या Window API, Apps Script में उपलब्ध नहीं हैं.
अपने-आप पूरा होना
स्क्रिप्ट एडिटर में "कॉन्टेंट असिस्ट" सुविधा मिलती है. इसे आम तौर पर "ऑटोकंप्लीट" कहा जाता है. इससे स्क्रिप्ट के मौजूदा कॉन्टेक्स्ट में मान्य ग्लोबल ऑब्जेक्ट के साथ-साथ, तरीके और एनम का पता चलता है. Apps Script क्लास को वापस लाने वाले ग्लोबल ऑब्जेक्ट, enum या मेथड कॉल के बाद अवधि टाइप करने पर, अपने-आप सुझाव दिखने लगते हैं. उदाहरण के लिए:
- अगर आपने किसी ग्लोबल ऑब्जेक्ट का पूरा नाम टाइप किया है या अपने-आप पूरा होने वाले विकल्प से कोई नाम चुना है, तो
.(एक अवधि) टाइप करें. इससे आपको उस क्लास के सभी तरीके और enum दिखेंगे. - कुछ वर्ण टाइप करने पर, आपको उन वर्णों से शुरू होने वाले सभी मान्य सुझाव दिखते हैं.
ग्लोबल ऑब्जेक्ट
हर सेवा कम से कम एक ग्लोबल (टॉप-लेवल) ऑब्जेक्ट उपलब्ध कराती है. उदाहरण के लिए, Gmail सेवा को सिर्फ़ GmailApp ऑब्जेक्ट से ऐक्सेस किया जाता है. कुछ सेवाएं कई ग्लोबल ऑब्जेक्ट उपलब्ध कराती हैं. उदाहरण के लिए, बेस सर्विस में चार ग्लोबल ऑब्जेक्ट शामिल हैं: Browser, Logger, MimeType, और Session.
तरीके
बिल्ट-इन या ऐडवांस सेवाओं के लगभग सभी ग्लोबल ऑब्जेक्ट में ऐसे तरीके शामिल होते हैं जो डेटा या Apps Script क्लास दिखाते हैं. स्क्रिप्ट, इस फ़ॉर्मैट में तरीके के लिए कॉल करती हैं:
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 कीवर्ड का इस्तेमाल नहीं किया जा सकता. हालांकि, स्टैंडर्ड JavaScript क्लास जैसे कि Date के लिए इसका इस्तेमाल किया जा सकता है.
किसी चाइल्ड क्लास को ऐक्सेस करने के लिए, आपको ऐसी मेथड को कॉल करना होगा जो उसे वापस लौटाती है. अगर आपको किसी क्लास को ऐक्सेस करने का तरीका नहीं पता, तो सेवा के रेफ़रंस दस्तावेज़ के रूट पेज पर जाएं. इसमें सेवा के लिए क्लास और उन्हें वापस लाने के तरीके दिए गए हैं.
इंटरफ़ेस
कुछ सेवाओं में, रेफ़रंस दस्तावेज़ में "इंटरफ़ेस" के तौर पर लेबल की गई क्लास शामिल होती हैं. ये जेनरिक क्लास हैं. इनका इस्तेमाल उन तरीकों के लिए रिटर्न टाइप के तौर पर किया जाता है जो पहले से सटीक टाइप का पता नहीं लगा सकते. उदाहरण के लिए, Document service का Body.getChild(childIndex) तरीका, एक सामान्य Element ऑब्जेक्ट दिखाता है.
Element इंटरफ़ेस, किसी दूसरी क्लास को दिखाता है. यह Paragraph या Table हो सकता है. इंटरफ़ेस ऑब्जेक्ट का इस्तेमाल अकेले नहीं किया जा सकता. इसके बजाय, ऑब्जेक्ट को वापस किसी खास क्लास में बदलने के लिए, Element.asParagraph() जैसे किसी तरीके को कॉल करें.
Enums
ज़्यादातर सेवाओं में, नाम वाली वैल्यू के एनम (गिनती किए गए टाइप) शामिल होते हैं. उदाहरण के लिए, Google Drive सेवा, Access और Permission इनम का इस्तेमाल करती है. इससे यह तय किया जाता है कि किन उपयोगकर्ताओं के पास किसी फ़ाइल या फ़ोल्डर का ऐक्सेस है. ज़्यादातर मामलों में, इन enum को ग्लोबल ऑब्जेक्ट से ऐक्सेस किया जाता है. इसका उदाहरण यहां दिया गया है:
// 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);