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

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

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