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

एक 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 की कार्रवाइयां, Spreadsheet जैसी अन्य सेवाओं से बातचीत करने की तुलना में काफ़ी तेज़ होती हैं. जितने कम कॉल किए जाएंगे, उतनी ही तेज़ी से यह प्रोसेस पूरी होगी. यह ज़रूरी है, क्योंकि हर स्क्रिप्ट को ज़्यादा से ज़्यादा छह मिनट तक चलाया जा सकता है.

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 Expert, Romain Vialard ने बनाया है. Twitter पर Romain को फ़ॉलो करें @romain_vialard.

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

अगले चरण