पहले से मौजूद Google सेवाएं

Google Apps Script, उपयोगकर्ता के डेटा, Google के दूसरे सिस्टम, और बाहरी सिस्टम से इंटरैक्ट करने के लिए, 30 से ज़्यादा बिल्ट-इन सेवाएं उपलब्ध कराती है. ये सेवाएं, JavaScript के स्टैंडर्ड Math ऑब्जेक्ट जैसे ग्लोबल ऑब्जेक्ट के तौर पर दी जाती हैं. उदाहरण के लिए, Math, random() और PI जैसे कॉन्सटेंट जैसे तरीके ऑफ़र करता है. इसी तरह, Apps Script की स्प्रेडशीट सेवा, openById(id), क्लास (चाइल्ड ऑब्जेक्ट) जैसे, Range, और DataValidationCriteria जैसे एनम दिखाती है.

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 ग्लोबल ऑब्जेक्ट का इस्तेमाल किया जा सकता है.

ऑटोकंप्लीट की सुविधा का इस्तेमाल करना

स्क्रिप्ट एडिटर एक "कॉन्टेंट असिस्ट" सुविधा देता है, जिसे आम तौर पर "ऑटोकंप्लीट" कहा जाता है. इसमें ग्लोबल ऑब्जेक्ट के साथ-साथ ऐसे तरीकों और Enum की जानकारी भी मिलती है जो स्क्रिप्ट के मौजूदा कॉन्टेक्स्ट में मान्य हैं. अपने-आप पूरे होने वाले सुझाव जब भी किसी ग्लोबल ऑब्जेक्ट, Enum या मेथड कॉल के बाद कोई पीरियड टाइप करते हैं, जो Apps Script क्लास दिखाता है, तो अपने-आप दिखते हैं. उदाहरण के लिए:

  • किसी ग्लोबल ऑब्जेक्ट का पूरा नाम टाइप करने या ऑटोकंप्लीट सुविधा में से किसी एक को चुनने पर, . (एक पीरियड) टाइप करने पर, आपको उस क्लास के लिए सभी तरीके और 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 स्क्रिप्ट' क्लास देता है, तो आप एक लाइन से मेथड कॉल को चेन कर सकते हैं. (रिटर्न टाइप, ऑटोकंप्लीट की सुविधा और किसी तरीके के रेफ़रंस दस्तावेज़, दोनों में दिखाए जाते हैं.) उदाहरण के लिए, तरीका DocumentApp.create() Document दिखाता है. इसलिए, कोड के ये दो सेक्शन एक जैसे हैं:

var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');

// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');

बच्चों के लिए बने क्लास ऐक्सेस करना

हर सेवा में एक या उससे ज़्यादा चाइल्ड क्लास शामिल होती हैं, जिन्हें ग्लोबल ऑब्जेक्ट के तौर पर टॉप लेवल से ऐक्सेस नहीं किया जा सकता. इन क्लास को बनाने के लिए, new कीवर्ड का इस्तेमाल नहीं किया जा सकता, जैसा कि Date जैसी स्टैंडर्ड JavaScript क्लास के साथ किया जा सकता है. चाइल्ड क्लास को ऐक्सेस करने के लिए, आपको सिर्फ़ नतीजे दिखाने वाले तरीके को कॉल करना होगा. अगर आपको किसी खास क्लास को ऐक्सेस करने का तरीका नहीं पता है, तो सेवा के रेफ़रंस दस्तावेज़ के रूट पेज पर जाएं. साथ ही, वह तरीका ढूंढें जिससे आपकी पसंद की क्लास मिलती हो.

इंटरफ़ेस मैनेज करें

कुछ सेवाओं में विशेष क्लास शामिल हैं जिन्हें रेफ़रंस दस्तावेज़ में "इंटरफ़ेस" के रूप में लेबल किया गया है. ये सामान्य क्लास हैं. इनका इस्तेमाल उन तरीकों के लिए किया जाता है जो पहले से सटीक टाइप तय नहीं कर सकते. जैसे, दस्तावेज़ सेवा वाला तरीका, Body.getChild(childIndex), सामान्य Element ऑब्जेक्ट दिखाता है. Element एक ऐसा इंटरफ़ेस है जो किसी दूसरी क्लास को दिखाता है. जैसे, Paragraph या Table. इंटरफ़ेस ऑब्जेक्ट अपने-आप शायद ही अपने काम के हों. इसके बजाय, ऑब्जेक्ट को वापस किसी सटीक क्लास में कास्ट करने के लिए, आप Element.asParagraph() जैसे तरीके को कॉल करना चाहते हैं.

Enum के साथ काम करना

ज़्यादातर सेवाओं में, नाम वाली वैल्यू के कुछ एनम (सूची के टाइप) शामिल होते हैं. उदाहरण के लिए, किन उपयोगकर्ताओं के पास फ़ाइल या फ़ोल्डर का ऐक्सेस है, यह तय करने के लिए Drive सेवा, Enum Access और Permission का इस्तेमाल करती है. करीब सभी मामलों में, इन Enum को ग्लोबल ऑब्जेक्ट से ऐक्सेस किया जाता है. उदाहरण के लिए, मेथड 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);