شروع سریع کتابخانه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
یک کتابخانه Apps Script بسازید که می توانید از آن برای حذف ردیف های تکراری در داده های صفحه گسترده استفاده کنید.
اهداف
- اسکریپت را تنظیم کنید
- اسکریپت را اجرا کنید.
پیش نیازها
برای استفاده از این نمونه به پیش نیازهای زیر نیاز دارید:
- یک حساب Google (حسابهای Google Workspace ممکن است به تأیید سرپرست نیاز داشته باشند).
- یک مرورگر وب با دسترسی به اینترنت.
اسکریپت را تنظیم کنید
برای ساخت کتابخانه مراحل زیر را انجام دهید:
- به حساب Google خود وارد شوید.
- برای باز کردن ویرایشگر اسکریپت، به script.google.com بروید.
- در بالا سمت راست، روی پروژه جدید کلیک کنید.
هر کدی را در ویرایشگر اسکریپت حذف کنید و کد زیر را جایگذاری کنید.
روی ذخیره کلیک کنید
.
در بالا سمت راست، روی پروژه بدون عنوان کلیک کنید.
اسکریپت خود را نامگذاری کنید. ردیف های تکراری را حذف کنید و روی تغییر نام کلیک کنید.
روی Deploy > New Deployment کلیک کنید.
در کنار Select type روی Enable Deployment Types کلیک کنید
> کتابخانه
شرحی از کتابخانه را وارد کنید، مانند حذف ردیفهای تکراری . هر کسی که به کتابخانه دسترسی داشته باشد می تواند این توضیحات را مشاهده کند.
روی Deploy کلیک کنید.
در سمت چپ، روی تنظیمات پروژه کلیک کنید
.
در بخش شناسهها ، شناسه اسکریپت را برای استفاده در مرحله بعد کپی کنید.
اسکریپت را اجرا کنید
برای استفاده از کتابخانه، باید حداقل مجوزهای مشاهده پروژه Apps Script آن را داشته باشید. از زمانی که کتابخانه را ایجاد کردید، مجوزهای لازم برای استفاده از آن را دارید. اگر میخواهید به دیگران اجازه دهید از کتابخانه استفاده کنند، به آنها اجازه مشاهده پروژه Apps Script را بدهید.
برای استفاده از کتابخانه مراحل زیر را انجام دهید:
- صفحهگسترده Google Sheets را باز کنید که دارای دادههایی با ردیفهای تکراری است. برای استفاده از صفحهگسترده نمونه، از صفحهگسترده ردیفهای تکراری نمونه کپی کنید .
- روی برنامههای افزودنی > اسکریپت برنامهها کلیک کنید.
- در کنار کتابخانه ها ، روی افزودن add کتابخانه کلیک کنید.
- در بخش Script ID ، شناسه اسکریپت را از پروژه کتابخانه Apps Script که در بخش قبلی کپی کردهاید، جایگذاری کنید.
- روی Look up کلیک کنید.
- در بخش Version ، 1 را انتخاب کنید.
- روی افزودن کلیک کنید.
هر کدی را در ویرایشگر اسکریپت حذف کنید و کد زیر را جایگذاری کنید.
function runLibrary() {
Removeduplicaterows.removeDuplicates();
}
در منوی تابع، runLibrary را انتخاب کنید.
روی Run کلیک کنید.
برای مشاهده داده های به روز شده بدون ردیف های تکراری، به صفحه گسترده بازگردید.
کد را مرور کنید
برای بررسی کد Apps Script برای این راه حل، روی مشاهده کد منبع در زیر کلیک کنید:
کد منبع را مشاهده کنید
ابتدا اسکریپت یک تماس با صفحه گسترده برقرار می کند تا همه داده ها را بازیابی کند. شما می توانید انتخاب کنید که برگه را ردیف به ردیف بخوانید، اما عملیات جاوا اسکریپت به طور قابل توجهی سریعتر از صحبت کردن با سرویس های دیگر مانند صفحه گسترده است. هرچه تماس های کمتری داشته باشید، سریع تر می شود. این مهم است زیرا هر اجرای اسکریپت حداکثر 6 دقیقه زمان اجرا دارد.
data
متغیر یک آرایه دو بعدی جاوا اسکریپت است که حاوی تمام مقادیر موجود در برگه است. 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;
}
عبارت شرطی بالا هر بار که دو سطر دارای داده های یکسان در ستون های اول و دوم شیت هستند، موارد تکراری را پیدا می کند.
مشارکت کنندگان
این نمونه توسط Romain Vialard، یک متخصص توسعه دهنده گوگل ایجاد شده است. رومن را در توییتر @romain_vialard دنبال کنید.
این نمونه توسط گوگل با کمک کارشناسان توسعه دهنده گوگل نگهداری می شود.
مراحل بعدی
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-29 بهوقت ساعت هماهنگ جهانی."],[[["\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)"]]