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

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

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

अगले चरण