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

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

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 के विशेषज्ञों की मदद ली जाती है.

अगले चरण