लाइब्रेरी क्विकस्टार्ट

ऐसी Apps Script लाइब्रेरी बनाएं जिसका इस्तेमाल करके, स्प्रेडशीट डेटा में डुप्लीकेट लाइनें हटाई जा सकें.

मकसद

  • स्क्रिप्ट सेट अप करें.
  • स्क्रिप्ट चलाएं.

ज़रूरी शर्तें

इस सैंपल का इस्तेमाल करने के लिए, आपको ये ज़रूरी शर्तें पूरी करनी होंगी:

  • Google खाता (Google Workspace खातों के लिए, एडमिन की अनुमति की ज़रूरत पड़ सकती है).
  • इंटरनेट का ऐक्सेस वाला वेब ब्राउज़र.

स्क्रिप्ट सेट अप करना

लाइब्रेरी बनाने के लिए, यह तरीका अपनाएं:

  1. अपने Google खाते में साइन इन करें.
  2. स्क्रिप्ट एडिटर खोलने के लिए, script.google.com पर जाएं.
  3. सबसे ऊपर बाईं ओर, नया प्रोजेक्ट पर क्लिक करें.
  4. स्क्रिप्ट एडिटर में मौजूद कोई भी कोड मिटाएं और नीचे दिया गया कोड चिपकाएं.

    sheets/removingDuplicates/removingDuplicates.gs
    /**
     * Removes duplicate rows from the current sheet.
     */
    function removeDuplicates() {
      const sheet = SpreadsheetApp.getActiveSheet();
      const data = sheet.getDataRange().getValues();
      const uniqueData = {};
      for (let row of data) {
        const key = row.join();
        uniqueData[key] = uniqueData[key] || row;
      }
      sheet.clearContents();
      const newData = Object.values(uniqueData);
      sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
    }
  5. सेव करें सेव करने का आइकॉन पर क्लिक करें.

  6. सबसे ऊपर बाईं ओर, बिना शीर्षक वाला प्रोजेक्ट पर क्लिक करें.

  7. अपनी स्क्रिप्ट को डुप्लीकेट पंक्तियां हटाएं नाम दें और नाम बदलें पर क्लिक करें.

  8. डिप्लॉय करें > नया डिप्लॉयमेंट पर क्लिक करें.

  9. टाइप चुनें के बगल में, डिप्लॉयमेंट टाइप चालू करें पर क्लिक करें डिप्लॉयमेंट के टाइप चालू करने के लिए आइकॉन > लाइब्रेरी.

  10. लाइब्रेरी का ब्यौरा डालें, जैसे कि डुप्लीकेट पंक्तियां हटाएं. लाइब्रेरी का ऐक्सेस रखने वाला कोई भी व्यक्ति, यह जानकारी देख सकता है.

  11. डिप्लॉय करें पर क्लिक करें.

  12. बाईं ओर, प्रोजेक्ट सेटिंग प्रोजेक्ट सेटिंग का आइकॉन पर क्लिक करें.

  13. आईडी में जाकर, स्क्रिप्ट आईडी को कॉपी करें, ताकि उसे अगले चरण में इस्तेमाल किया जा सके.

स्क्रिप्ट चलाना

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

लाइब्रेरी का इस्तेमाल करने के लिए, यह तरीका अपनाएं:

  1. Google Sheets की ऐसी स्प्रेडशीट खोलें जिसमें डुप्लीकेट पंक्तियों वाला डेटा हो. सैंपल स्प्रेडशीट का इस्तेमाल करने के लिए, डुप्लीकेट लाइनों की सैंपल स्प्रेडशीट की कॉपी बनाएं.
  2. एक्सटेंशन > Apps Script पर क्लिक करें.
  3. लाइब्रेरी के बगल में, लाइब्रेरी जोड़ें पर क्लिक करें.
  4. स्क्रिप्ट आईडी सेक्शन में, लाइब्रेरी के उस Apps Script प्रोजेक्ट का स्क्रिप्ट आईडी चिपकाएं जिसे आपने पिछले सेक्शन में कॉपी किया था.
  5. खोजें पर क्लिक करें.
  6. वर्शन सेक्शन में, 1 चुनें.
  7. जोड़ें पर क्लिक करें.
  8. स्क्रिप्ट एडिटर में मौजूद कोई भी कोड मिटाएं और नीचे दिया गया कोड चिपकाएं.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. फ़ंक्शन ड्रॉपडाउन में, runLibrary चुनें.

  10. चलाएं पर क्लिक करें.

  11. डुप्लीकेट लाइनों के बिना अपडेट किया गया डेटा देखने के लिए, स्प्रेडशीट पर वापस जाएं.

कोड की समीक्षा करना

इस समाधान के लिए Apps Script कोड की समीक्षा करने के लिए, यहां दिए गए सोर्स कोड देखें पर क्लिक करें:

सोर्स कोड देखना

सबसे पहले, स्क्रिप्ट सभी डेटा को वापस पाने के लिए स्प्रेडशीट को एक कॉल करती है. आपके पास शीट को पंक्ति के हिसाब से पढ़ने का विकल्प है. हालांकि, Spreadsheet जैसी अन्य सेवाओं के साथ बातचीत करने की तुलना में, JavaScript के ऑपरेशन काफ़ी तेज़ होते हैं. जितने कम कॉल किए जाएंगे उतनी ही तेज़ी से यह प्रोसेस पूरी होगी. यह ज़रूरी है, क्योंकि हर स्क्रिप्ट को ज़्यादा से ज़्यादा छह मिनट तक चलाया जा सकता है.

sheets/removingDuplicates/removingDuplicates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

वैरिएबल data, JavaScript का दो डाइमेंशन वाला ऐरे है. इसमें शीट की सभी वैल्यू शामिल होती हैं. newData एक खाली कलेक्शन है, जहां स्क्रिप्ट सभी डुप्लीकेट पंक्तियों को डालती है.

sheets/removingDuplicates/removingDuplicates.gs
const newData = Object.values(uniqueData);

पहला for लूप, data दो डाइमेंशन वाले ऐरे की हर पंक्ति पर दोहराता है. हर पंक्ति के लिए, दूसरा लूप यह जांच करता है कि newData कलेक्शन में, मैच करने वाले डेटा वाली कोई दूसरी पंक्ति पहले से मौजूद है या नहीं. अगर यह डुप्लीकेट नहीं है, तो लाइन को newData कलेक्शन में डाल दिया जाता है.

sheets/removingDuplicates/removingDuplicates.gs
uniqueData[key] = uniqueData[key] || row;

आखिर में, स्क्रिप्ट शीट का मौजूदा कॉन्टेंट मिटा देती है और newData कलेक्शन का कॉन्टेंट डाल देती है.

sheets/removingDuplicates/removingDuplicates.gs
sheet.clearContents();
const newData = Object.values(uniqueData);
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);

बदलाव

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

कुछ कॉलम में मैच होने वाले डेटा वाली पंक्तियां हटाना

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

सैंपल कोड में, यह लाइन अपडेट करें:

    if(row.join() == newData[j].join()){
      duplicate = true;
    }

लाइन को इस कोड से बदलें:

    if(row[0] == newData[j][0] && row[1] == newData[j][1]){
      duplicate = true;
    }

ऊपर दिया गया शर्त वाला स्टेटमेंट, हर बार डुप्लीकेट वैल्यू ढूंढता है, जब शीट के पहले और दूसरे कॉलम में दो पंक्तियों में एक ही डेटा होता है.

योगदानकर्ता

यह सैंपल, Google डेवलपर एक्सपर्ट रोमेन वियालर्ड ने बनाया है. रोमेन को Twitter पर @romain_vialard पर फ़ॉलो करें.

इस सैंपल को Google, Google Developer Experts की मदद से मैनेज करता है.

अगले चरण