دليل البدء السريع للمكتبة
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
أنشئ مكتبة Apps Script يمكنك استخدامها لإزالة الصفوف المكرّرة في بيانات جدول البيانات.
الأهداف
- إعداد النص البرمجي
- شغِّل النص البرمجي.
المتطلبات الأساسية
لاستخدام هذا النموذج، يجب استيفاء المتطلبات الأساسية التالية:
- حساب Google (قد تتطلّب حسابات Google Workspace موافقة المشرف).
- متصفّح ويب يمكنه الوصول إلى الإنترنت
إعداد النص البرمجي
لإنشاء المكتبة، اتّبِع الخطوات التالية:
- سجِّل الدخول إلى حسابك على Google.
- لفتح محرِّر النصوص البرمجية، انتقِل إلى script.google.com.
- في أعلى يمين الصفحة، انقر على مشروع جديد.
احذف أي رمز في أداة تعديل النصوص البرمجية وألصِق الرمز أدناه.
انقر على "حفظ"
.
في أعلى يمين الصفحة، انقر على مشروع بدون عنوان.
أدخِل اسمًا للبرنامج النصي إزالة الصفوف المكرّرة وانقر على إعادة التسمية.
انقر على نشر > عملية نشر جديدة.
بجانب اختيار النوع، انقر على "تفعيل أنواع النشر"
> المكتبة.
أدخِل وصفًا للمكتبة، مثل إزالة الصفوف المكرّرة. يمكن لأي شخص لديه إذن الوصول إلى المكتبة الاطّلاع على هذا الوصف.
انقر على نشر.
على يمين الصفحة، انقر على إعدادات المشروع
.
ضِمن أرقام التعريف، انسخ معرّف النص البرمجي لاستخدامه في خطوة لاحقة.
تشغيل النص البرمجي
لاستخدام مكتبة، يجب أن يكون لديك إذن عرض على الأقل لمشروع Apps Script الخاص بها. بما أنّك أنشأت المكتبة، لديك الأذونات المطلوبة لاستخدامها. إذا أردت السماح للآخرين باستخدام المكتبة، امنحهم إذن العرض لمشروع Apps Script.
لاستخدام المكتبة، اتّبِع الخطوات التالية:
- افتح جدول بيانات في "جداول بيانات Google" يتضمّن بيانات مع صفوف مكرّرة. لاستخدام جدول بيانات نموذجي، أنشئ نسخة من جدول بيانات الصفوف المكرّرة النموذجية.
- انقر على الإضافات > برمجة تطبيقات Google.
- بجانب المكتبات، انقر على "إضافة مكتبة" add.
- في قسم رقم تعريف النص البرمجي، الصِق رقم تعريف النص البرمجي من مشروع مكتبة Apps Script الذي نسخته في القسم السابق.
- انقر على بحث.
- في قسم الإصدار، اختَر 1.
- انقر على إضافة.
احذف أي رمز في أداة تعديل النصوص البرمجية وألصِق الرمز أدناه.
function runLibrary() {
Removeduplicaterows.removeDuplicates();
}
في القائمة المنسدلة الخاصة بالدالة، اختَر runLibrary.
انقر على تشغيل.
ارجع إلى جدول البيانات للاطّلاع على البيانات المعدّلة بدون صفوف مكرّرة.
مراجعة الرمز البرمجي
لمراجعة رمز Apps Script الخاص بهذا الحلّ، انقر على عرض رمز المصدر أدناه:
عرض رمز المصدر
أولاً، ينفّذ النص البرمجي طلبًا واحدًا إلى جدول البيانات لاسترداد جميع البيانات. يمكنك اختيار قراءة ورقة البيانات صفًا صفًا، ولكن عمليات JavaScript تكون أسرع بكثير من التفاعل مع خدمات أخرى، مثل "جداول بيانات Google". كلّما قلّ عدد المكالمات التي تجريها، زادت سرعة العملية. هذا مهم لأنّ الحد الأقصى لمدة تنفيذ كل نص برمجي هو 6 دقائق.
المتغيّر data
هو عبارة عن مصفوفة ثنائية الأبعاد في JavaScript تحتوي على جميع القيم في ورقة البيانات. newData
هو صفيف فارغ يضع فيه البرنامج النصي جميع الصفوف غير المكرّرة.
تتكرّر حلقة for
الأولى على كل صف في مصفوفة data
الثنائية الأبعاد. بالنسبة إلى كل صف، تتحقّق الحلقة الثانية مما إذا كان هناك صف آخر يتضمّن بيانات مطابقة في مصفوفة newData
. إذا لم يكن الصف مكررًا، يتم إضافته إلى مصفوفة newData
.
أخيرًا، يحذف النص البرمجي المحتوى الحالي للورقة ويدرج محتوى مصفوفة 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 المطوّرين.
الخطوات التالية
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eThis guide provides step-by-step instructions to create an Apps Script library that removes duplicate rows from Google Sheets data.\u003c/p\u003e\n"],["\u003cp\u003eThe library uses a JavaScript function to identify and remove duplicate rows by comparing all column values within each row.\u003c/p\u003e\n"],["\u003cp\u003eUsers need a Google Account and a web browser to implement this solution, which involves setting up, deploying, and running the script within a spreadsheet.\u003c/p\u003e\n"],["\u003cp\u003eThe provided code can be modified to remove rows based on matching data in specific columns, enhancing the library's functionality.\u003c/p\u003e\n"]]],[],null,["# Library quickstart\n\nBuild an [Apps Script library](/apps-script/guides/libraries) that you can use to remove duplicate rows in spreadsheet data.\n\nObjectives\n----------\n\n- Set up the script.\n- Run the script.\n\nPrerequisites\n-------------\n\nTo use this sample, you need the following prerequisites:\n\n- A Google Account (Google Workspace accounts might require administrator approval).\n- A web browser with access to the internet.\n\nSet up the script\n-----------------\n\nTo build the library, take the following steps:\n\n1. Sign in to your Google Account.\n2. To open the script editor, go to [script.google.com](https://script.google.com/home).\n3. At the top left, click **New project**.\n4. Delete any code in the script editor and paste in the code below.\n\n sheets/removingDuplicates/removingDuplicates.gs \n [View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n ```javascript\n /**\n * Removes duplicate rows from the current sheet.\n */\n function removeDuplicates() {\n const sheet = SpreadsheetApp.getActiveSheet();\n const data = sheet.getDataRange().getValues();\n const uniqueData = {};\n for (let row of data) {\n const key = row.join();\n uniqueData[key] = uniqueData[key] || row;\n }\n sheet.clearContents();\n const newData = Object.values(uniqueData);\n sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);\n }\n ```\n5. Click Save .\n\n6. At the top left, click **Untitled project**.\n\n7. Name your script **Remove duplicate rows** and click **Rename**.\n\n8. Click **Deploy** \\\u003e **New deployment**.\n\n9. Next to **Select type** click Enable deployment types\n\n \\\u003e **Library**.\n\n10. Enter a description of the library, such as **Remove duplicate rows**. Anyone\n with access to the library can view this description.\n\n11. Click **Deploy**.\n\n12. At the left, click **Project settings** .\n\n13. Under **IDs**, copy the script ID for use in a later step.\n\nRun the script\n--------------\n\nTo use a library, you must have at least view permissions for its\nApps Script project. Since you created the library, you have the\nrequired permissions\nto use it. If you want to let others use the library, give them view permission\nfor the Apps Script project.\n\nTo use the library, take the following steps:\n\n1. Open a Google Sheets spreadsheet that has data with duplicate rows. To use a sample spreadsheet, [make a copy of the **Sample duplicate rows** spreadsheet](https://docs.google.com/spreadsheets/d/1_Tcb0kokQIYCEz_nWnxUHZp8nwTysjjxucMmVZ0DeSg/copy?usp=sharing).\n2. Click **Extensions** \\\u003e **Apps Script**.\n3. Next to **Libraries** , click Add a library add.\n4. In the **Script ID** section, paste the script ID from the library Apps Script project you copied in the previous section.\n5. Click **Look up**.\n6. In the **Version** section, select **1**.\n7. Click **Add**.\n8. Delete any code in the script editor and paste in the code below.\n\n function runLibrary() {\n Removeduplicaterows.removeDuplicates();\n }\n\n9. In the function dropdown, select **runLibrary**.\n\n10. Click **Run**.\n\n11. Return to the spreadsheet to view the updated data without duplicate rows.\n\nReview the code\n---------------\n\nTo review the Apps Script code for this solution, click **View source code**\nbelow: \n\n#### View the source code\n\n\nFirst, the script makes a single call to the spreadsheet to retrieve all the\ndata. You can choose to read the sheet row by row, but JavaScript operations are\nconsiderably faster than talking to other services like Spreadsheet. The fewer\ncalls you make, the faster it goes. This is important because each script\nexecution has a maximum run time of 6 minutes. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nconst sheet = SpreadsheetApp.getActiveSheet();\nconst data = sheet.getDataRange().getValues();\n```\n\n\nThe variable `data` is a JavaScript 2-dimensional array that contains\nall the values in the sheet. `newData` is an empty array where the\nscript puts all the non-duplicate rows. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nconst newData = Object.values(uniqueData);\n```\n\n\nThe first `for` loop iterates over each row in the `data`\n2-dimensional array. For each row, the second loop tests if another row with\nmatching data already exists in the `newData` array. If it's not a\nduplicate, the row is pushed into the `newData` array. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nuniqueData[key] = uniqueData[key] || row;\n```\n\n\nFinally, the script deletes the existing content of the sheet and inserts\nthe content of the `newData` array. \nsheets/removingDuplicates/removingDuplicates.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/sheets/removingDuplicates/removingDuplicates.gs) \n\n```javascript\nsheet.clearContents();\nconst newData = Object.values(uniqueData);\nsheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);\n```\n\nModifications\n-------------\n\nYou can edit the library as much as you'd like to fit your needs. Below is an\noptional modification. \n\n#### Remove rows with matching data in some columns\n\n\nInstead of removing rows that match entirely, you might want to remove rows with\nmatching data in just one or two of the columns. To do that, you can change the\nconditional statement.\n\n\nIn the sample code, update the following line: \n\n```transact-sql\n if(row.join() == newData[j].join()){\n duplicate = true;\n }\n```\n\n\nReplace the line with the following code: \n\n```transact-sql\n if(row[0] == newData[j][0] && row[1] == newData[j][1]){\n duplicate = true;\n }\n```\n\n\nThe above conditional statement finds duplicates each time two rows have the\nsame data in the first and second columns of the sheet.\n\nContributors\n------------\n\nThis sample was created by Romain Vialard, a Google Developer Expert. Follow\nRomain on Twitter [@romain_vialard](https://twitter.com/romain_vialard).\n\nThis sample is maintained by Google with the help of Google Developer Experts.\n\nNext steps\n----------\n\n- [Libraries](/apps-script/guides/libraries)\n- [Create and manage deployments](/apps-script/concepts/deployments)"]]