دليل البدء السريع للمكتبة

أنشئ مكتبة 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" يحتوي على بيانات تتضمّن صفوفًا مكرّرة. لاستخدام جدول بيانات نموذجي، أنشئ نسخة من جدول بيانات عيّنة الصفوف المكرّرة.
  2. انقر على الإضافات > برمجة تطبيقات Google.
  3. بجانب المكتبات، انقر على رمز إضافة مكتبة .
  4. في قسم رقم تعريف النص البرمجي، الصِق رقم تعريف النص البرمجي من مشروع مكتبة Apps Script الذي نسخته في القسم السابق.
  5. انقر على البحث.
  6. في قسم الإصدار، اختَر 1.
  7. انقر على إضافة.
  8. احذف أي رمز في محرِّر النصوص البرمجية والصق الرمز أدناه.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. في القائمة المنسدلة للدالة، اختَر runLibrary.

  10. انقر على تشغيل.

  11. ارجع إلى جدول البيانات للاطّلاع على البيانات المعدّلة بدون الصفوف المكرّرة.

مراجعة الرمز

لمراجعة رمز Apps Script لهذا الحلّ، انقر على عرض رمز المصدر أدناه:

عرض رمز المصدر

أولاً، يُجري النص البرمجي طلبًا واحدًا إلى جدول البيانات لاسترداد كل البيانات. يمكنك اختيار قراءة ورقة البيانات صفًا تلو الآخر، ولكن عمليات JavaScript تتم بخطى أسرع بكثير من التواصل مع خدمات أخرى مثل "جداول بيانات Google". كلما قلّ عدد المكالمات التي تجريها، زادت سرعة الإجراء. هذا مهم لأنّ مدة تنفيذ كل نص برمجي تبلغ 6 دقائق كحد أقصى.

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 ثنائي الأبعاد. لكل صف، تختبر الحلقة الثانية ما إذا كان هناك صف آخر يحتوي على 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. يمكنك متابعة رومين على Twitter ‎@romain_vialard.

تُعدّ Google هذه العينة بمساعدة خبراء Google Developers.

الخطوات التالية