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

एक 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 कोड की समीक्षा करने के लिए, नीचे सोर्स कोड देखें पर क्लिक करें:

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

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

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

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

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

पहला for लूप, data 2-डाइमेंशन वाले अरे में हर लाइन के ऊपर फिर से लागू होता है. हर लाइन के लिए, दूसरा लूप यह जांच करता है कि 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 के विशेषज्ञों की मदद से मैनेज करता है.

अगले चरण