Google Sheets के साथ Apps Script की बुनियादी बातें #1: मैक्रो और कस्टम फ़ंक्शन

1. Apps Script में आपका स्वागत है

Apps Script क्या है?

Apps Script, ऐप्लिकेशन को तेज़ी से डेवलप करने वाला प्लैटफ़ॉर्म है. इसकी मदद से, Google Workspace को ऑटोमेट किया जा सकता है, उसे पसंद के मुताबिक बनाया जा सकता है, और उसकी सुविधाओं को बढ़ाया जा सकता है. Apps Script की मदद से, Google Workspace में मुश्किल या जटिल काम को आसान बनाया जा सकता है. इससे समय और मेहनत की बचत होती है.

Apps Script की सुविधाओं में ये शामिल हैं:

  • Apps Script की पहले से मौजूद सेवाओं की मदद से, स्क्रिप्ट का इस्तेमाल करके Google Workspace ऐप्लिकेशन के डेटा को पढ़ा, अपडेट किया, और उसमें बदलाव किया जा सकता है.
  • Apps Script के इन-ब्राउज़र कोड एडिटर का इस्तेमाल करके स्क्रिप्ट बनाई जा सकती हैं. इसके लिए, कोड डेवलपमेंट सॉफ़्टवेयर को इंस्टॉल या चलाने की ज़रूरत नहीं होती.
  • Google Workspace के एडिटर के लिए, ऐसे यूज़र इंटरफ़ेस डिज़ाइन किए जा सकते हैं जिनकी मदद से, मेन्यू आइटम, डायलॉग, और साइडबार का इस्तेमाल करके, सीधे तौर पर स्क्रिप्ट चालू की जा सकती हैं.

Google Sheets के साथ Apps Script के इस कोडलैब की प्लेलिस्ट में, Apps Script की बुनियादी बातें बताई गई हैं. साथ ही, यह भी बताया गया है कि Google Sheets को बेहतर तरीके से इस्तेमाल करने के लिए, Apps Script का इस्तेमाल कैसे किया जाता है. इस कोडलैब में, Apps Script की बुनियादी बातें सिखाई गई हैं.

Spreadsheet सेवा

Apps Script का इस्तेमाल करके, Google Sheets की सुविधाओं को बढ़ाया जा सकता है, ताकि कम समय में और आसानी से काम किया जा सके. Apps Script, स्प्रेडशीट सेवा उपलब्ध कराता है. इसकी मदद से स्क्रिप्ट, आपकी Google शीट फ़ाइलों और उनमें मौजूद डेटा के साथ इंटरैक्ट कर सकती हैं. इस सेवा का इस्तेमाल करके, स्प्रेडशीट से जुड़े इन सामान्य कामों को अपने-आप पूरा किया जा सकता है:

  • स्प्रेडशीट बनाना या उसमें बदलाव करना.
  • सेल का डेटा, फ़ॉर्मूले, और फ़ॉर्मैटिंग को पढ़ना और अपडेट करना.
  • कस्टम बटन और मेन्यू बनाएं.
  • Google के अन्य ऐप्लिकेशन या तीसरे पक्ष के सोर्स से डेटा इंपोर्ट और एक्सपोर्ट करें.
  • स्प्रेडशीट शेयर करना और उनके ऐक्सेस को कंट्रोल करना.

आपको क्या सीखने को मिलेगा

इस प्लेलिस्ट में, Google Sheets के साथ Apps Script का इस्तेमाल शुरू करने के लिए ज़रूरी सभी विषयों को शामिल किया गया है:

  1. मैक्रो और कस्टम फ़ंक्शन
  2. स्प्रेडशीट, शीट, और रेंज
  3. डेटा के साथ काम करना
  4. डेटा फ़ॉर्मैट करना
  5. Slides में डेटा को चार्ट में दिखाना और प्रज़ेंट करना

इस प्लेलिस्ट में मौजूद कोडलैब को क्रम से पढ़ना चाहिए. इसलिए, इसे पढ़ना शुरू करें और बेहतर तरीके से सीखने के लिए, इन्हें क्रम से पूरा करें.

इस कोडलैब के कॉन्टेंट के बारे में ज़्यादा जानने के लिए, अगले सेक्शन पर जाएं.

2. परिचय

इस प्लेलिस्ट के पहले कोडलैब में आपका स्वागत है. इस कोडलैब में, Google Sheets के साथ Apps Script इस्तेमाल करने के बारे में बुनियादी बातें बताई गई हैं. खास तौर पर, इस कोडलैब में दो मुख्य कॉन्सेप्ट पर फ़ोकस किया गया है: मैक्रो और कस्टम फ़ंक्शन.

मैक्रो, Google Sheets में रिकॉर्ड की गई कार्रवाइयों की एक सीरीज़ होती है. रिकॉर्ड करने के बाद, मैक्रो को चालू किया जा सकता है. इससे बाद में, उन कार्रवाइयों को दोहराया जा सकता है. इसके लिए, मेन्यू आइटम या शॉर्टकट कुंजी का इस्तेमाल करें. Google Sheets और Apps Script के कोड एडिटर, दोनों में अपने मैक्रो बनाए और अपडेट किए जा सकते हैं.

Apps Script कोड एडिटर में, कस्टम फ़ंक्शन भी बनाए जा सकते हैं. Sheets में पहले से मौजूद फ़ंक्शन (जैसे कि SUM या AVERAGE) की तरह ही, Apps Script का इस्तेमाल करके सामान्य और खास कार्रवाइयों (जैसे कि कन्वर्ज़न या स्ट्रिंग कॉनकैटेनेशन) के लिए, अपने कस्टम फ़ंक्शन लिखे जा सकते हैं. फ़ंक्शन बनाने के बाद, Sheets में इन्हें उसी तरह कॉल किया जा सकता है जिस तरह पहले से मौजूद किसी फ़ंक्शन को कॉल किया जाता है. कस्टम फ़ंक्शन का इस्तेमाल, आपके लिखे गए सेल फ़ॉर्मूलों में भी किया जा सकता है. साथ ही, ज़रूरत के मुताबिक उन्हें दूसरे फ़ंक्शन के साथ जोड़ा जा सकता है.

इस कोडलैब में शामिल सिद्धांतों और ज़रूरी शर्तों के बारे में जानने के लिए, यहां दी गई जानकारी पढ़ें.

आपको क्या सीखने को मिलेगा

  • Google Sheets के लिए स्क्रिप्ट बनाने का तरीका.
  • Apps Script एडिटर को नेविगेट करने का तरीका.
  • मैक्रो बनाने और उन्हें अपडेट करने का तरीका.
  • Sheets का पहला कस्टम फ़ंक्शन बनाने का तरीका.

आपको किन चीज़ों की ज़रूरत होगी

  • JavaScript की बुनियादी जानकारी
  • Google Sheets के बारे में बुनियादी जानकारी
  • Sheets के A1 नोटेशन को पढ़ने की सुविधा

आपने बुनियादी बातें जान ली हैं. मैक्रो का इस्तेमाल शुरू करने के लिए, अगले सेक्शन पर जाएं.

3. Sheets में मैक्रो बनाना

आम तौर पर, स्प्रेडशीट में काम करते समय, आपको एक ही तरह की कार्रवाइयां बार-बार करनी पड़ सकती हैं. जैसे, सेल की वैल्यू कॉपी करना, फ़ॉर्मैटिंग करना, फ़ॉर्मूले बनाना वगैरह. इससे काम मुश्किल हो सकता है और गलतियां हो सकती हैं. बार-बार की जाने वाली कार्रवाइयों को अपने-आप पूरा करने के लिए, Google Sheets में मैक्रो की सुविधा उपलब्ध है. मैक्रो की मदद से, किसी शीट में की गई कार्रवाइयों को ‘रिकॉर्ड' किया जा सकता है. रिकॉर्ड किए गए मैक्रो की मदद से, स्प्रेडशीट में किसी दूसरी जगह पर भी वही कार्रवाइयां दोहराई जा सकती हैं. इसके लिए, आपको सिर्फ़ हॉटकी को दबाना होगा.

इस सेक्शन में, आपको Sheets में मैक्रो बनाने का तरीका बताया जाएगा. अगले सेक्शन में, आपको Apps Script का इस्तेमाल करके मैक्रो बनाने का तरीका बताया जाएगा.

शुरू करने से पहले

आगे बढ़ने से पहले, आपके पास कुछ डेटा वाली स्प्रेडशीट होनी चाहिए. हमने आपके लिए एक डेटा शीट उपलब्ध कराई है: डेटा शीट कॉपी करने के लिए, इस लिंक पर क्लिक करें. इसके बाद, कॉपी बनाएं पर क्लिक करें.

5b8aded1bb349ecf.png

आपके इस्तेमाल के लिए, उदाहरण के तौर पर दी गई स्प्रेडशीट की एक कॉपी आपके Google Drive फ़ोल्डर में रखी गई है. इसका नाम "Copy of Top 10 Highest Grossing Films (2018)." है.

मैक्रो बनाना

अब आपके पास काम करने के लिए एक स्प्रेडशीट है. इसलिए, Google Sheets में मैक्रो रिकॉर्ड किया जा सकता है. इस उदाहरण के लिए, आपको एक ऐसा मैक्रो बनाना होगा जो आपके डेटा के लिए हेडर वाली लाइन को फ़ॉर्मैट करे. यह तरीका अपनाएं:

  1. कर्सर को लाइन में रखने के लिए, सेल A1 पर क्लिक करें. यह आपकी हेडर लाइन है.
  2. मेन्यू में, एक्सटेंशन > मैक्रो > मैक्रो रिकॉर्ड करें चुनें.

रिकॉर्डिंग शुरू करने के बाद, Google Sheets आपकी स्प्रेडशीट में किए गए हर काम को याद रखता है. जैसे: सेल हाइलाइट करना, डेटा जोड़ना, अलग-अलग शीट पर स्विच करना, फ़ॉर्मैटिंग करना वगैरह. ये कार्रवाइयां, ‘स्क्रिप्ट' बन जाती हैं. बाद में मैक्रो को सेव और चालू करने पर, ये कार्रवाइयां दोहराई जाती हैं.

  1. मैक्रो डायलॉग में, सापेक्ष रेफ़रंस चुनें.

c59f2f12317352d2.gif

  1. पहली लाइन चुनें.

1d782ee30c66a02b.gif

  1. सबसे ऊपर वाली लाइन के रंग भरें विकल्प में जाकर, रंग को सफ़ेद से डार्क मैजेंटा 3 पर सेट करें.

f7e7abaf76e338c7.png

  1. सबसे ऊपर वाली लाइन के टेक्स्ट का रंग काले से बदलकर सफ़ेद करें.

d5e630acbe83148.png

  1. टेक्स्ट को बोल्ड करने के लिए, Ctrl+B दबाएं. macOS पर, Cmd+B दबाएं.
  2. सबसे ऊपर वाली लाइन को फ़्रीज़ करने के लिए, व्यू > फ़्रीज़ करें > 1 लाइन को चुनें.

97cb244ffebe8953.png

  1. मैक्रो डायलॉग में, सेव करें पर क्लिक करें. एक नया डायलॉग बॉक्स खुलेगा, जिसमें आपसे मैक्रो का नाम डालने के लिए कहा जाएगा. "हेडर" नाम डालें और सेव करें पर क्लिक करें.

b4610a54340da518.gif

आपने Sheets के यूज़र इंटरफ़ेस का इस्तेमाल करके, हेडर को फ़ॉर्मैट करने के लिए एक खास मैक्रो बनाया है.

4ed7fbed18ea3681.png

मैक्रो चालू करना

Sheets में अपने नए मैक्रो को लागू करने के लिए, यह तरीका अपनाएं:

  1. कोई शीट बनाने के लिए, शीट जोड़ें 9c9b0c19bf317e7f.png पर क्लिक करें.

927c012b4e11475b.png

  1. नई शीट में, A1:C2 में कुछ टेक्स्ट जोड़ें. यहाँ दिए गए उदाहरणों का इस्तेमाल करें:

c3aadaef52a609bf.png

  1. पहली लाइन को हाइलाइट करें.

cfe36fcf833d0bd7.gif

  1. चुने गए हिस्से पर मैक्रो लागू करने के लिए, एक्सटेंशन> मैक्रो> हेडर पर क्लिक करें.
  2. स्क्रीन पर दिए गए निर्देशों का पालन करके, मैक्रो को अनुमति दें.
  1. मैक्रो को फिर से चलाने के लिए, चौथे चरण को दोहराएं. अनुमति देने से, मैक्रो का पहला एक्ज़ीक्यूशन रुक जाता है.

बधाई हो, आपने Sheets में मैक्रो लागू करने का तरीका सीख लिया है. आपकी स्प्रैडशीट ऐसी दिखनी चाहिए:

7c7130a4a697bd92.png

मैक्रो की मदद से, स्प्रेडशीट को आसानी से बनाया जा सकता है. इस कोडलैब के अगले हिस्से में, आपको मैक्रो को और भी ज़्यादा असरदार बनाने का तरीका बताया जाएगा. यहां एक अहम जानकारी दी गई है: मैक्रो रिकॉर्ड करने का मतलब है कि Apps Script कोड लिखना. पर्दे के पीछे, Sheets ऐसा कोड बनाता है जो मैक्रो की कार्रवाइयों से मेल खाता है. अगले सेक्शन में, आपको Apps Script के इन-ब्राउज़र एडिटर का इस्तेमाल करके, कोड में सीधे तौर पर बदलाव करने का तरीका बताया जाएगा.

4. स्क्रिप्ट एडिटर में मैक्रो

मैक्रो बनाते समय, Google Sheets आपकी कार्रवाइयों को Apps Script फ़ंक्शन के तौर पर सेव करता है. मैक्रो चालू करने पर, Google Sheets, Apps Script फ़ंक्शन को कॉल करता है, ताकि उन कार्रवाइयों को उसी क्रम में लागू किया जा सके.

स्क्रिप्ट एडिटर

मैक्रो बनाने के बाद, उसका कोड देखा जा सकता है. मैक्रो स्क्रिप्ट देखने के लिए, एक्सटेंशन > Apps Script पर क्लिक करें. इससे Apps Script के लिए ब्राउज़र कोड एडिटर खुल जाएगा.

स्क्रिप्ट एडिटर की मदद से, Apps Script में कोड लिखा जा सकता है. साथ ही, उन स्क्रिप्ट को Google के सर्वर पर चलाया जा सकता है.

macros.gs का विश्लेषण

मौजूदा स्क्रिप्ट की समीक्षा करें. आपने Header मैक्रो रिकॉर्ड किया था. इस दौरान, Sheets ने macros.gs स्क्रिप्ट फ़ाइल बनाई थी. इसमें Header नाम का Apps Script फ़ंक्शन जोड़ा गया था. Header मैक्रो को चालू करने पर, Sheets इस फ़ंक्शन को चलाता है.

Apps Script में मैक्रो फ़ंक्शन के स्ट्रक्चर के बारे में जानने के लिए, यहां दी गई इमेज देखें. अगर आपने चरणों को किसी दूसरे क्रम में रिकॉर्ड किया है या रिकॉर्डिंग के दौरान स्प्रेडशीट पर क्लिक किया है, तो आपका कोड इससे थोड़ा अलग दिख सकता है.

5d653a69a0897adf.png

पहली लाइन, एनोटेशन वाली टिप्पणी है. इससे अनुमति पर असर पड़ता है:

/** @OnlyCurrentDoc */

ज़्यादातर स्क्रिप्ट, उपयोगकर्ता से कुछ अनुमतियां मांगती हैं, ताकि वे चल सकें. इन अनुमतियों से यह कंट्रोल किया जाता है कि उपयोगकर्ता, स्क्रिप्ट को क्या करने की अनुमति दे रहा है. अगर किसी स्क्रिप्ट प्रोजेक्ट में @OnlyCurrentDoc टिप्पणी मौजूद है, तो Apps Script सिर्फ़ मौजूदा स्प्रेडशीट को ऐक्सेस करने और उसे अपडेट करने की अनुमति मांगेगा. इस टिप्पणी के बिना, Apps Script को उपयोगकर्ता की सभी स्प्रेडशीट को ऐक्सेस करने और अपडेट करने की अनुमति मांगनी होगी. अगर आपको सिर्फ़ एक फ़ाइल के साथ काम करना है, तो इस एनोटेशन को शामिल करना हमेशा सबसे सही तरीका होता है. मैक्रो रिकॉर्डर, इस टिप्पणी को आपके लिए अपने-आप जोड़ देता है.

Apps Script, आपके मैक्रो के निर्देशों को कैसे दिखाता है, यह समझने के लिए इस फ़ंक्शन को देखें:

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};

Header मैक्रो चालू करने पर, यह कोड चलता है. function के बाद, लेबल Header() फ़ंक्शन का नाम और उसके पैरामीटर तय करता है. ध्यान दें कि Header() के लिए किसी पैरामीटर की ज़रूरत नहीं होती, क्योंकि Apps Script में मैक्रो फ़ंक्शन के लिए इनपुट की ज़रूरत नहीं होती. Apps Script में, फ़ंक्शन के मुख्य हिस्से को हमेशा कर्ली ब्रैकेट में रखा जाता है.

इस प्लेलिस्ट में मौजूद बाद के कोडलैब में, मैक्रो बनाने में शामिल क्लास और कॉन्सेप्ट के बारे में बताया गया है. फ़िलहाल, कोड की जानकारी पढ़कर इसके कॉम्पोनेंट और मैक्रो बनाने में उनकी भूमिका के बारे में सामान्य जानकारी पाई जा सकती है. पहली लाइन पर ध्यान दें:

var spreadsheet = SpreadsheetApp.getActive();

यहां, getActive(), Sheets में मौजूद मौजूदा चालू स्प्रेडशीट फ़ाइल को दिखाता है. साथ ही, इसे नए वैरिएबल spreadsheet पर सेट करता है.

var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();

ये लाइनें, पहली लाइन पर क्लिक करके उसे हाइलाइट करने की कार्रवाई से जुड़ी हैं. इसे ऐक्टिवेशन कहा जाता है. पहली लाइन, मौजूदा शीट को sheet वैरिएबल में सेव करती है. वहीं, दूसरी लाइन getRange() तरीके का इस्तेमाल करके, पूरी पहली लाइन को ऐक्सेस करती है. इसके बाद, इसे चालू करने के लिए activate() को कॉल करती है. पहली लाइन को, पंक्ति और कॉलम की संख्या का इस्तेमाल करके तय किया जाता है. spreadsheet.getCurrentCell().getRow() कॉल, मौजूदा लाइन की संख्या दिखाता है. वहीं, sheet.getMaxColumns() शीट में कॉलम की ज़्यादा से ज़्यादा संख्या दिखाता है.

spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');

यह कोड थोड़ा मुश्किल हो जाता है. spreadsheet के साथ तरीकों को असरदार तरीके से कॉल करने के लिए, कोड getActiveRangeList() पर तीन तरीकों को स्टैक करता है. इससे कोड को इस spreadsheet तरीके को एक से ज़्यादा बार कॉल करने से रोका जा सकता है. Apps Script का इस्तेमाल करके ज़्यादा कोडिंग करने पर, आपको एक क्लास में कई तरीकों को कॉल करने के इस तरीके के बारे में ज़्यादा जानकारी मिलेगी. इसे मेथड चेनिंग भी कहा जाता है. फ़िलहाल, कोड ब्लॉक में दिए गए हर तरीके के बारे में कम शब्दों में जानकारी पाने के लिए, यहां दिया गया लेख पढ़ें:

  • getActiveRangeList(), spreadsheet में मौजूद मौजूदा चालू RangeList दिखाता है. इस मामले में, यह सिर्फ़ पहली लाइन है जिसे पिछली लाइन ने चालू किया था.
  • setBackground(color) और setFontColor(color), दोनों ही तरीकों से, चुनी गई रेंज की सेल के रंग एट्रिब्यूट बदले जाते हैं.
  • setFontWeight(fontWeight) से, चुनी गई रेंज की सेल के फ़ॉन्ट का वेट बदला जाता है.

आखिर में, फ़ाइनल लाइन मैक्रो की पहली लाइन को फ़्रीज़ कर देती है:

spreadsheet.getActiveSheet().setFrozenRows(1);

यह वही स्क्रिप्ट है जिसे आपने मैक्रो रिकॉर्ड करते समय जनरेट किया था. ऊपर बताए गए किसी भी ऐसे शब्द या तरीके के बारे में चिंता न करें जिसके बारे में आपको जानकारी नहीं है. इस ब्यौरे का मकसद, आपको उन कुछ आइडिया के बारे में सोचना है जिन पर Apps Script, मैक्रो फ़ंक्शन में फ़ोकस करती है. साथ ही, यह उन विषयों के बारे में भी बताता है जिनके बारे में आने वाले समय में कोडलैब में ज़्यादा जानकारी दी जाएगी.

अगले सेक्शन में, Header() फ़ंक्शन के कोड में बदलाव करने के बारे में बताया गया है. इससे यह पता चलता है कि मैक्रो को और ज़्यादा पसंद के मुताबिक बनाने के लिए, स्क्रिप्ट एडिटर का इस्तेमाल कैसे किया जा सकता है.

Apps Script की मदद से मैक्रो को पसंद के मुताबिक बनाना

Apps Script एडिटर में, Google Sheets में पहले बनाया गया मैक्रो दिखता है. फ़ंक्शन बॉडी के कॉन्टेंट में बदलाव करके, मैक्रो के निर्देशों को अपनी पसंद के मुताबिक बनाया जा सकता है. इससे अलग या अतिरिक्त कार्रवाइयां की जा सकती हैं. यहां दी गई एक्सरसाइज़ में, स्क्रिप्ट एडिटर की मदद से मैक्रो में बदलाव करने के अलग-अलग तरीके बताए गए हैं.

उन सेल में बदलाव करना जिन पर असर पड़ा है

मान लें कि आपको अपने मैक्रो में बदलाव करना है, ताकि यह पूरी लाइन के बजाय सिर्फ़ पहली लाइन के पहले 10 कॉलम पर लागू हो. मैक्रो को मिटाकर फिर से रिकॉर्ड किया जा सकता है. हालांकि, Apps Script Editor का इस्तेमाल करके, सीधे तौर पर ये बदलाव किए जा सकते हैं. ऐसा करने का एक तरीका यहां दिया गया है:

  1. स्क्रिप्ट एडिटर में, sheet.getMaxColumns() को 10 से बदलें. इस बदलाव से, स्प्रेडशीट में उन सेल की रेंज बदल जाती है जिन पर मैक्रो लागू होता है.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
    /* sheet.getMaxColumns() replaced with 10.*/
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. अपनी स्क्रिप्ट सेव करने के लिए, सेव करें सेव पर क्लिक करें.
  2. अपने प्रोजेक्ट का नाम बदलने के लिए, प्रोजेक्ट का नया नाम "Macros and Custom Functions" डालें. इसके बाद, नाम बदलें पर क्लिक करें.
  3. कोई शीट बनाने के लिए, Sheets में जाकर, शीट जोड़ें 9c9b0c19bf317e7f.png पर क्लिक करें.

927c012b4e11475b.png

  1. स्क्रिप्ट एडिटर में, फ़ंक्शन की सूची से Header चुनें और चलाएं पर क्लिक करें.

आपको नई शीट में यह नतीजा दिखेगा:

8a58ba02535b2b9c.png

ऐक्टिव या टारगेट रेंज में बदलाव करने पर, अब आपका मैक्रो सिर्फ़ पहली लाइन के कुछ हिस्से पर असर डालता है. Apps Script के कई तरीके, रेंज या A1 नोटेशन को पैरामीटर के तौर पर लेते हैं. इससे यह तय किया जाता है कि किन सेल पर कार्रवाई करनी है.

इसके बाद, आइए मैक्रो के रंगों को पसंद के मुताबिक बनाने के बारे में जानें.

अपने मैक्रो के रंग बदलना

Apps Script, Sheets में मैक्रो या अन्य एलिमेंट की कलर स्कीम डिज़ाइन करने में आपकी मदद कर सकती है. इसके लिए, वह किसी रेंज के टेक्स्ट या बैकग्राउंड के रंग में बदलाव कर सकती है. अपने मैक्रो के रंगों को पसंद के मुताबिक बनाने का तरीका जानने के लिए, यहां दिए गए निर्देशों का पालन करें.

इन निर्देशों में, मैक्रो के बैकग्राउंड का रंग बदलने के बारे में बताया गया है:

  1. Sheets में, उस शीट पर वापस जाएं जिसमें ओरिजनल डेटा (शीट 1) मौजूद है.
  2. पहली लाइन को हाइलाइट करने के लिए, उस पर क्लिक करें.
  3. स्क्रिप्ट एडिटर में, बैकग्राउंड के रंग #4c1130 को #afeeee से बदलें. ये वैल्यू, हेक्स ट्रिपलेट नोटेशन का इस्तेमाल करके अलग-अलग रंगों को दिखाती हैं.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
    /* #4c1130 replaced with #afeeee.*/
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. अपनी स्क्रिप्ट सेव करने के लिए, सेव करें सेव पर क्लिक करें.
  2. फ़ंक्शन की सूची में जाकर, Header चुनें और चलाएं पर क्लिक करें.

Sheets में, पहली पंक्ति के पहले 10 कॉलम के बैकग्राउंड का रंग बदलकर, पसंद के मुताबिक फ़िरोज़ी रंग हो जाता है:

bbd26f7c8e35039.png

setBackground(color) के पैरामीटर में, हेक्स कलर नोटेशन को #4c1130 (डार्क मैजेंटा 3) से #afeeee (हल्का फ़िरोज़ी रंग, यह विकल्प Sheets के डिफ़ॉल्ट कलर मेन्यू में उपलब्ध नहीं है) पर स्विच करके, मैक्रो के बैकग्राउंड कलर के रंग एट्रिब्यूट को बदला जा सकता है.

आपने अब मैक्रो के ज़रिए सेट किए गए बैकग्राउंड के रंग में बदलाव कर दिया है. अगर आपको टेक्स्ट का रंग भी बदलना है, तो दूसरे रंग का कोड बदलें.

  1. Sheets में, पहली लाइन पर क्लिक करें, ताकि यह पक्का किया जा सके कि वह अब भी हाइलाइट की गई है.
  2. स्क्रिप्ट एडिटर में, फ़ॉन्ट के रंग #ffffff को #191970 से बदलें. इससे मैक्रो, फ़ॉन्ट का रंग गहरा नीला सेट कर देता है.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. अपनी स्क्रिप्ट सेव करने के लिए, सेव करें सेव पर क्लिक करें.
  2. फ़ंक्शन की सूची में जाकर, Header चुनें और चलाएं पर क्लिक करें.

Sheets पर वापस जाएं. अब आपको दिखेगा कि हेडर लाइन के टेक्स्ट का रंग नेवी ब्लू हो गया है.

2eaf2fb4879e1b36.png

अब आपने देख लिया है कि मैक्रो, Sheets में की गई कार्रवाइयों को Apps Script कोड के तौर पर रिकॉर्ड करते हैं. अगले सेक्शन में, Google Sheets के साथ काम करने में Apps Script आपकी मदद कैसे कर सकती है, इसके बारे में एक और तरीका बताया गया है: कस्टम फ़ंक्शन.

5. अपनी पहली स्क्रिप्ट कोड करना: कस्टम फ़ंक्शन

ज़्यादातर स्प्रेडशीट ऐप्लिकेशन की तरह, Google Sheets में भी कई फ़ॉर्मूला फ़ंक्शन पहले से मौजूद होते हैं. जैसे, =SUM(). इनकी मदद से, स्प्रेडशीट के डेटा पर तुरंत कैलकुलेशन की जा सकती है. कस्टम फ़ंक्शन ऐसे फ़ंक्शन होते हैं जिन्हें Apps Script का इस्तेमाल करके तय किया जाता है. कस्टम फ़ंक्शन तय करने के बाद, इसका इस्तेमाल अपनी स्प्रेडशीट में कहीं भी किया जा सकता है. ठीक वैसे ही जैसे पहले से मौजूद किसी फ़ंक्शन का इस्तेमाल किया जाता है.

इस सेक्शन में, Apps Script में ऐसा कस्टम फ़ंक्शन बनाने का तरीका बताया गया है जो मुद्रा को बदलता है.

स्क्रिप्ट फ़ाइल बनाना

मैक्रो सेक्शन में मौजूद उसी स्प्रेडशीट और स्क्रिप्ट प्रोजेक्ट का इस्तेमाल करके, नई स्क्रिप्ट बनाने का तरीका जानने के लिए इन निर्देशों का पालन करें. इस स्क्रिप्ट का इस्तेमाल, आखिर में अपने पहले कस्टम फ़ंक्शन को बनाने के लिए किया जा सकता है:

  1. Apps Script फ़ाइल बनाने के लिए, स्क्रिप्ट एडिटर पर वापस जाएं.
  2. फ़ाइलें के बगल में मौजूद, फ़ाइल जोड़ें कोई फ़ाइल जोड़ना > स्क्रिप्ट पर क्लिक करें.
  3. नई स्क्रिप्ट फ़ाइल को customFunctions नाम दें और Enter दबाएं. (Apps Script, स्क्रिप्ट फ़ाइल के नाम में .gs एक्सटेंशन अपने-आप जोड़ देता है.)

एडिटर में customFunctions.gs नाम का एक नया टैब दिखता है.

कस्टम फ़ंक्शन के लिए स्क्रिप्ट बनाने के बाद, अब इसमें कोड डाला जा सकता है.

डॉलर को स्विस फ़्रैंक में बदलना

मान लें कि आपको ‘साल 2018 में सबसे ज़्यादा कमाई करने वाली टॉप 10 फ़िल्में' के डेटा में बदलाव करना है. आपको न सिर्फ़ दुनिया भर में हुई कमाई को अमेरिकी डॉलर में दिखाना है, बल्कि स्विस फ़्रैंक में भी दिखाना है. कस्टम फ़ंक्शन की मदद से, ऐसा आसानी से किया जा सकता है. यहां दिए गए उदाहरण में, डॉलर की वैल्यू को फ़्रैंक की वैल्यू में बदलने के लिए, कस्टम फ़ंक्शन बनाने का तरीका बताया गया है.

पहला कस्टम फ़ंक्शन लिखने से पहले, अपने डेटासेट में बदलाव करें, ताकि फ़ंक्शन सही आउटपुट दिखा सके. ऐसा करने के लिए:

  1. Sheets में, कॉलम H पर राइट क्लिक करें.
  2. इसके बाद दिखने वाले मेन्यू में, दाईं ओर एक कॉलम जोड़ें पर क्लिक करें.

दाईं ओर एक कॉलम जोड़ने का विकल्प दिखाने वाला मेन्यू

  1. I1 सेल में मौजूद कॉलम को "Worldwide_Gross (Swiss francs)" के तौर पर लेबल करें.

अब आपके पास एक ऐसा कॉलम है जो आपके कन्वर्ज़न कस्टम फ़ंक्शन के नतीजों को सेव कर सकता है. इसके बाद, स्क्रिप्ट एडिटर का इस्तेमाल करके, अपना पहला कस्टम फ़ंक्शन बनाया जा सकता है.

  1. customFunctions.gs में, myFunction() के कोड को इस कोड से बदलें:
/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The converted total of Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

यह कोड, डॉलर को स्विस फ़्रैंक में बदल देगा. नीचे दिए गए निर्देशों को आज़माएं और देखें कि शीट में कस्टम फ़ंक्शन कैसे चलाया जा सकता है.

  1. अपनी स्क्रिप्ट सेव करने के लिए, सेव करें सेव पर क्लिक करें.
  2. Sheets में, I2 सेल चुनें.
  3. फ़ंक्शन बार में, =USDTOCHF(H2) डालें.

कॉलम की बाकी सेल में फ़ॉर्मूला लागू करने के लिए:

  1. अपने कर्सर को I2 सेल के सबसे नीचे दाएं कोने पर ले जाएं और छोटे नीले बॉक्स को चुनें. नीले बॉक्स पर पॉइंट करते समय, आपका कर्सर 9c9b0c19bf317e7f.png में बदल जाना चाहिए.
  2. नीले बॉक्स को नीचे की ओर खींचकर, I3:I11 रेंज को हाइलाइट करें.

3cf46560d6cea0de.gif

कॉलम I में अब कॉलम H में मौजूद अमेरिकी डॉलर की वैल्यू के स्विस फ़्रैंक में कन्वर्ज़न की जानकारी दी गई है.

7fc06b3d7e3e2a9.png

बधाई हो, आपने अपना पहला कस्टम फ़ंक्शन बना लिया है. अगले सेक्शन में, USDTOCHF() में शामिल कोड के बारे में बताया गया है.

USDTOCHF() का विश्लेषण

शुरुआती टिप्पणियों में, कोड के मकसद के बारे में बताया गया है:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */

इस तरह के कमेंट ब्लॉक का इस्तेमाल प्रोग्रामिंग में अक्सर किया जाता है. इससे यह पता चलता है कि फ़ंक्शन क्या करते हैं.

इस टिप्पणी में, दो हिस्सों की पहचान की जा सकती है: फ़ंक्शन का ब्यौरा (डॉलर को फ़्रैंक में बदलने के लिए) और एनोटेशन, जो फ़ंक्शन के पैरामीटर और रिटर्न टाइप के बारे में बताते हैं.

एनोटेशन की मदद से, Apps Script JSDoc का इस्तेमाल करता है. इससे आपको अपने कोड के लिए दस्तावेज़ बनाने और अपने-आप पूरे होने वाले सुझाव बनाने में मदद मिलती है. USDTOCHF() में इस्तेमाल किए गए हर एनोटेशन से, Apps Script को डेवलप करने में कैसे मदद मिलती है, इसके बारे में यहां पढ़ें:

  • @param: फ़ंक्शन में पास किए गए हर पैरामीटर के बारे में बताने के लिए, @param एनोटेशन का इस्तेमाल किया जा सकता है.
  • @return: फ़ंक्शन क्या दिखाता है, यह बताने के लिए @return एनोटेशन का इस्तेमाल किया जा सकता है.
  • @customfunction: आपको हमेशा किसी भी कस्टम फ़ंक्शन की दस्तावेज़ टिप्पणी में @customfunction जोड़ना चाहिए. इस एनोटेशन से Sheets को यह सूचना मिलती है कि वह आपके कस्टम फ़ंक्शन को अपने-आप पूरा करे. ठीक उसी तरह जैसे Sheets, किसी सेल में फ़ंक्शन का नाम डालने पर पहले से मौजूद फ़ंक्शन को अपने-आप पूरा करता है. इसे यहां देखा जा सकता है:

d8680ab6efae97ac.gif

ध्यान दें कि ऑटोकंप्लीट पॉप-अप में दिखने वाला टेक्स्ट, टिप्पणी वाले ब्लॉक में डाले गए ब्यौरे के टेक्स्ट से पूरी तरह मेल खाता है. कस्टम फ़ंक्शन को इस्तेमाल करने में आसानी हो, इसके लिए यह पक्का करें कि आपने जो ब्यौरे बनाए हैं वे अच्छी तरह से लिखे गए हों और उनमें पूरी जानकारी दी गई हो.

इसके बाद, फ़ंक्शन USDTOCHF() में मौजूद कोड पर फ़ोकस करें:

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

जैसा कि पहले बताया गया है, USDTOCHF(), डॉलर वाले संख्यात्मक वैरिएबल को लेता है, उसे तय किए गए एक्सचेंज रेट से गुणा करता है, और संख्यात्मक वैरिएबल swissFrancs में स्विस फ़्रैंक में बदली गई वैल्यू दिखाता है. इनपुट पैरामीटर, उस सेल में मौजूद वैल्यू होती है जिसे किसी सेल में कस्टम फ़ंक्शन जोड़ते समय तय किया जाता है. इस उदाहरण में, डॉलर में दी गई इनपुट वैल्यू, कॉलम H से ली गई हैं. आउटपुट वैल्यू swissFrancs को फ़ंक्शन की सेल में रखा जाता है. इस उदाहरण में, यह कॉलम I है.

कस्टम फ़ंक्शन, संख्या या स्ट्रिंग वैल्यू के साथ काम कर सकते हैं. इसके बारे में आपको अगले सेक्शन में जानकारी मिलेगी.

स्ट्रिंग प्रीफ़िक्स को जोड़ना

मान लें कि आपको USDTOCHF() फ़ंक्शन के संख्या वाले आउटपुट में, स्विस फ़्रैंक का प्रीफ़िक्स CHF शामिल करना है. Apps Script की मदद से ऐसा किया जा सकता है. इसके लिए, कॉनकैटेनेशन ऑपरेटर (+), का इस्तेमाल करें. इसका तरीका यहां दिया गया है:

  1. स्क्रिप्ट एडिटर में, @return एनोटेशन को अपडेट करें, ताकि संख्या के बजाय स्ट्रिंग दिखे.
  2. return swissFrancs को return 'CHF' + swissFrancs में बदलें.

+ ऑपरेटर, swissFrancs में मौजूद वैल्यू के आगे CHF स्ट्रिंग जोड़ता है. अब आपका कोड ऐसा दिखना चाहिए:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {string} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99;
  return 'CHF' + swissFrancs;
}
  1. अपनी स्क्रिप्ट सेव करने के लिए, सेव करें सेव पर क्लिक करें.

अब स्विस फ़्रैंक स्ट्रिंग, कॉलम I की वैल्यू के पहले जुड़ गई है:

20e4bfb7f0a994ea.png

अब आपका कस्टम फ़ंक्शन, अमेरिकी डॉलर को स्विस फ़्रैंक में बदलने के साथ-साथ, स्ट्रिंग प्रीफ़िक्स के साथ मुद्रा भी दिखाता है.

ऐडवांस: बाहरी डेटा फ़ेच करना

यह बुनियादी कस्टम फ़ंक्शन के लिए एक अच्छा उदाहरण है. हालांकि, इस उदाहरण में यह माना गया है कि डॉलर से स्विस फ़्रैंक में बदलने की दर स्थिर है. मान लें कि आपको current एक्सचेंज रेट का इस्तेमाल करना है, ताकि जब भी शीट को फिर से लोड किया जाए, तो वैल्यू की फिर से गणना की जाए और मौजूदा कन्वर्ज़न को दिखाया जा सके? इसके लिए, आपको यह पता होना चाहिए कि मौजूदा विनिमय दर क्या है. यह जानकारी Google Sheets में आसानी से उपलब्ध नहीं होती. हालांकि, Apps Script का इस्तेमाल करके इसे पाया जा सकता है.

स्विस फ़्रैंक को अमेरिकी डॉलर में बदलने की मौजूदा दर पाने के लिए, इस तरह के कोड का इस्तेमाल किया जा सकता है:

function USDTOCHF(dollars){
  // Gets a cache that is common to all users of the script.
  var cache = CacheService.getScriptCache();

  // Accesses the memory location (rates.CHF) of the script cache.
  var rate = cache.get('rates.CHF');

  // If a cache miss occurs, the program fetches the current
  // CHF rate from an API and stores the rate in the cache
  // for later convenience.
  if (!rate) {
    var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
    var result = JSON.parse(response.getContentText());
    rate = result.rates.CHF;
    cache.put('rates.CHF', rate);
  }
  // Converts dollars to CHF according to the latest rate.
  var swissFrancs = dollars * rate;
  // Returns the CHF value.
  return 'CHF' + swissFrancs;
}

यह कोड, तीसरे पक्ष के एक्सचेंज रेट एपीआई का इस्तेमाल करके, वित्तीय जानकारी देने वाले सर्वर से मौजूदा एक्सचेंज रेट फ़ेच करता है. इसके लिए, Apps Script की सेवाओं का इस्तेमाल किया जाता है. जैसे, UrlFetchApp और CacheService. ये बेहतर कॉन्सेप्ट, इस खास कोडलैब के दायरे से बाहर हैं. हालांकि, Google Sheets में मुश्किल टास्क को अपने-आप पूरा करने के लिए, Apps Script की वर्सटाइल सुविधाओं का इस्तेमाल किया जा सकता है.

कस्टम फ़ंक्शन के दिशा-निर्देश

कस्टम फ़ंक्शन के लिए एक्सरसाइज़ पूरी करने पर बधाई. अपने प्रोजेक्ट में कस्टम फ़ंक्शन इस्तेमाल करते समय, यह समझना ज़रूरी है कि इन पर कुछ पाबंदियां लागू होती हैं. यहां दी गई सूची में, Google Sheets में कस्टम फ़ंक्शन गाइड में बताई गई सीमाओं की खास जानकारी दी गई है:

  • ऐसे कस्टम फ़ंक्शन न बनाएं जिनके लिए उपयोगकर्ता की अनुमति ज़रूरी हो. इसके बजाय, सैंपल डेटा कैलकुलेशन, टेक्स्ट में बदलाव वगैरह जैसे सामान्य टास्क पूरे करने के लिए, कस्टम फ़ंक्शन बनाएं. Apps Script की सेवाओं का इस्तेमाल करना पर जाएं.
  • कस्टम फ़ंक्शन का नाम, पहले से मौजूद किसी फ़ंक्शन के नाम जैसा नहीं होना चाहिए. साथ ही, नाम के आखिर में अंडरस्कोर नहीं होना चाहिए. नाम रखने से जुड़े दिशा-निर्देश पढ़ें.
  • कस्टम फ़ंक्शन में वैरिएबल आर्ग्युमेंट पास न करें. कस्टम फ़ंक्शन में, सिर्फ़ तय की गई वैल्यू को आर्ग्युमेंट के तौर पर पास किया जा सकता है. =RAND() के नतीजे जैसे वैरिएबल आर्ग्युमेंट पास करने से, कस्टम फ़ंक्शन काम नहीं करेगा. तर्क से जुड़े दिशा-निर्देश देखें.
  • ऐसे फ़ंक्शन न बनाएं जिन्हें पूरा होने में 30 सेकंड से ज़्यादा समय लगता हो. अगर इसमें ज़्यादा समय लगता है, तो गड़बड़ी होगी. इसलिए, फ़ंक्शन कोड को आसान और सीमित रखें. कस्टम फ़ंक्शन में किए गए कैलकुलेशन को जितना हो सके उतना आसान रखें. वैल्यू लौटाने से जुड़े दिशा-निर्देश देखें.

अब स्क्रिप्ट एडिटर का इस्तेमाल करके, मैक्रो के साथ काम किया जा सकता है और कस्टम फ़ंक्शन बनाए जा सकते हैं. इससे अपनी स्प्रेडशीट को बेहतर बनाया जा सकता है. अगले सेक्शन में, आपने जो सीखा है उसकी समीक्षा की जा सकती है. साथ ही, स्क्रिप्टिंग के अपने कौशल को बेहतर बनाने के लिए, आगे क्या किया जा सकता है, यह भी देखा जा सकता है.

6. नतीजा

आपने Google Sheets के साथ Apps Script की बुनियादी बातों से जुड़ा पहला कोडलैब पूरा कर लिया है. आपने Sheets में मैक्रो और कस्टम फ़ंक्शन बनाकर और उनमें बदलाव करके, Apps Script के बुनियादी कॉन्सेप्ट सीख लिए हैं. अगले कोडलैब में, Apps Script के बारे में ज़्यादा जानकारी दी गई है.

क्या आपको यह कोडलैब काम का लगा?

हां नहीं

हमने क्या-क्या कवर किया है

  • Apps Script की बुनियादी बातें.
  • स्क्रिप्ट एडिटर को नेविगेट करने का तरीका.
  • Sheets में मैक्रो बनाने और उन्हें अपडेट करने का तरीका.
  • Google Sheets के लिए कस्टम फ़ंक्शन बनाने का तरीका.

आगे क्या करना है

इस प्लेलिस्ट के अगले कोडलैब में, Apps Script की Spreadsheet सेवा की मुख्य क्लास और शब्दावली के बारे में बताया गया है. इस सेवा की मदद से, Apps Script का इस्तेमाल करके Google Sheets में डेटा की वैल्यू और उसे दिखाने के तरीके को कंट्रोल किया जा सकता है.

अगला कोडलैब, स्प्रेडशीट, शीट, और रेंज पर उपलब्ध है.