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

Google 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 (const 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 का दो डाइमेंशन वाला एक ऐसा कलेक्शन है जिसमें शीट की सभी वैल्यू शामिल होती हैं. 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 Developer के विशेषज्ञ Romain Vialard ने बनाया है. Romain को Twitter @romain_vialard पर फ़ॉलो करें.

इस सैंपल को Google, Google Developer के विशेषज्ञ की मदद से मैनेज करता है.

अगले चरण