מדריך למתחילים בנושא הספרייה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
ליצור ספריית Apps Script שאפשר להשתמש בה כדי להסיר שורות כפולות בנתונים של גיליון אלקטרוני.
מטרות
- מגדירים את הסקריפט.
- מריצים את הסקריפט.
דרישות מוקדמות
כדי להשתמש בדוגמה הזו, אתם צריכים לעמוד בדרישות המוקדמות הבאות:
- חשבון Google (יכול להיות שחשבונות Google Workspace ידרשו אישור אדמין).
- דפדפן אינטרנט עם גישה לאינטרנט.
הגדרת הסקריפט
כדי ליצור את הספרייה, פועלים לפי השלבים הבאים:
- נכנסים לחשבון Google.
- כדי לפתוח את כלי העריכה של סקריפטים, עוברים אל script.google.com.
- בפינה הימנית העליונה, לוחצים על פרויקט חדש.
מוחקים את כל הקוד בעורך הסקריפטים ומדביקים את הקוד שבהמשך.
לוחצים על סמל השמירה
.
בפינה הימנית העליונה, לוחצים על פרויקט ללא שם.
נותנים לסקריפט את השם Remove duplicate rows (הסרת שורות כפולות) ולוחצים על Rename (שינוי שם).
לוחצים על פריסה > פריסה חדשה.
לצד Select type (בחירת סוג), לוחצים על Enable deployment types (הפעלת סוגי פריסה)
> Library (ספרייה).
מזינים תיאור של הספרייה, כמו הסרת שורות כפולות. כל מי שיש לו גישה לספרייה יכול לראות את התיאור הזה.
לוחצים על פריסה.
בצד ימין, לוחצים על הגדרות הפרויקט
.
בקטע מזהים, מעתיקים את מזהה הסקריפט כדי להשתמש בו בשלב מאוחר יותר.
הפעלת הסקריפט
כדי להשתמש בספרייה, צריכות להיות לכם לפחות הרשאות צפייה בפרויקט Apps Script שלה. מכיוון שיצרת את הספרייה, יש לך את ההרשאות הנדרשות לשימוש בה. אם רוצים לאפשר לאחרים להשתמש בספרייה, צריך לתת להם הרשאת צפייה בפרויקט Apps Script.
כדי להשתמש בספרייה, מבצעים את השלבים הבאים:
- פותחים גיליון אלקטרוני ב-Google Sheets שמכיל נתונים עם שורות כפולות. כדי להשתמש בגיליון אלקטרוני לדוגמה, יוצרים עותק של הגיליון האלקטרוני Sample duplicate rows.
- לוחצים על תוספים > Apps Script.
- לצד ספריות, לוחצים על סמל הוספת ספרייה add.
- בקטע Script ID (מזהה סקריפט), מדביקים את מזהה הסקריפט מתוך פרויקט הספרייה של Apps Script שהעתקתם בקטע הקודם.
- לוחצים על חיפוש.
- בקטע Version, בוחרים באפשרות 1.
- לוחצים על הוספה.
מוחקים את כל הקוד בעורך הסקריפטים ומדביקים את הקוד שבהמשך.
function runLibrary() {
Removeduplicaterows.removeDuplicates();
}
בתפריט הנפתח של הפונקציה, בוחרים באפשרות runLibrary.
לוחצים על Run.
חוזרים לגיליון האלקטרוני כדי לראות את הנתונים המעודכנים בלי שורות כפולות.
בדיקת הקוד
כדי לבדוק את קוד Apps Script של הפתרון הזה, לוחצים על הצגת קוד המקור למטה:
הצגת קוד המקור
קודם, הסקריפט מבצע קריאה אחת לגיליון האלקטרוני כדי לאחזר את כל הנתונים. אתם יכולים לבחור לקרוא את השורה בגיליון, אבל פעולות JavaScript מהירות משמעותית מאשר תקשורת עם שירותים אחרים כמו Spreadsheet. ככל שתבצעו פחות שיחות, כך התהליך יהיה מהיר יותר. זה חשוב כי לכל הרצת סקריפט יש זמן ריצה מקסימלי של 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;
}
ההצהרה המותנית שלמעלה מוצאת כפילויות בכל פעם שלשתי שורות יש את אותם נתונים בעמודות הראשונה והשנייה של הגיליון.
תורמים
הדוגמה הזו נוצרה על ידי רומן ויארד (Romain Vialard), מומחה Google למפתחים. אפשר לעקוב אחרי רומן ב-Twitter @romain_vialard.
הדוגמה הזו מתוחזקת על ידי Google בעזרת מומחי Google לפיתוח.
השלבים הבאים
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-08-31 (שעון UTC).
[null,null,["עדכון אחרון: 2025-08-31 (שעון UTC)."],[[["\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)"]]