מדריך למתחילים בנושא הספרייה

יוצרים ספריית Apps Script שבה אפשר להשתמש כדי להסיר שורות כפולות בנתוני הגיליון האלקטרוני.

מטרות

  • מגדירים את הסקריפט.
  • מריצים את הסקריפט.

דרישות מוקדמות

כדי להשתמש בדוגמה הזו, אתם צריכים את הדרישות המוקדמות הבאות:

  • חשבון Google (יכול להיות שלחשבונות Google Workspace יהיה צורך באישור אדמין).
  • דפדפן אינטרנט עם גישה לאינטרנט.

הגדרת הסקריפט

כדי לבנות את הספרייה, בצע את השלבים הבאים:

  1. נכנסים לחשבון Google.
  2. כדי לפתוח את עורך הסקריפטים, עוברים אל script.google.com.
  3. בפינה הימנית העליונה, לוחצים על New project (פרויקט חדש).
  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. ליד Select type, לוחצים על 'הפעלת סוגי פריסה' הסמל של הפעלת סוגי פריסה > ספרייה.

  10. מזינים תיאור של הספרייה, למשל הסרת שורות כפולות. כל מי שיש לו גישה לספרייה יכול לראות את התיאור הזה.

  11. לוחצים על פריסה.

  12. בצד ימין, לוחצים על Project settings (הגדרות הפרויקט) הסמל של הגדרות הפרויקט.

  13. בקטע מזהים מעתיקים את מזהה הסקריפט כדי להשתמש בו בשלב מאוחר יותר.

הרצת הסקריפט

כדי להשתמש בספרייה, צריך לפחות הרשאות צפייה בפרויקט Apps Script שלה. מאחר שיצרתם את הספרייה, יש לכם את ההרשאות הנדרשות כדי להשתמש בה. כדי לאפשר לאחרים להשתמש בספרייה, צריך לתת להם הרשאת צפייה בפרויקט Apps Script.

כדי להשתמש בספרייה, מבצעים את השלבים הבאים:

  1. פותחים גיליון אלקטרוני ב-Google Sheets שמכיל נתונים עם שורות כפולות. כדי להשתמש בגיליון אלקטרוני לדוגמה, יוצרים עותק של הגיליון האלקטרוני Samplesample rows.
  2. לוחצים על תוספים > Apps Script.
  3. ליד ספריות, לוחצים על 'הוספת ספרייה' .
  4. בקטע מזהה סקריפט, מדביקים את מזהה הסקריפט מפרויקט ה-Apps Script מהספרייה שהעתקתם בקטע הקודם.
  5. לוחצים על חיפוש.
  6. בקטע גרסה, בוחרים באפשרות 1.
  7. לוחצים על הוספה.
  8. מוחקים כל קוד בעורך הסקריפט ומדביקים את הקוד שלמטה.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. בתפריט הנפתח של הפונקציה, בוחרים באפשרות runLibrary.

  10. לוחצים על Run.

  11. חוזרים לגיליון האלקטרוני כדי לראות את הנתונים המעודכנים ללא שורות כפולות.

בדיקת הקוד

כדי לבדוק את הקוד של Apps Script של הפתרון הזה, לוחצים על הצגת קוד מקור למטה:

הצגת קוד המקור

קודם כל, הסקריפט מבצע קריאה אחת לגיליון האלקטרוני כדי לאחזר את כל הנתונים. תוכלו לקרוא את כל הגיליון, שורה אחרי שורה, אבל פעולות JavaScript מהירות בהרבה בהשוואה לשירותים אחרים, כמו sheet. ככל שמבצעים פחות שיחות, כך היא מהירה יותר. זה חשוב כי זמן הריצה המקסימלי של כל סקריפט הוא 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;
    }

בהצהרה המותנית שלמעלה מופיעים כפילויות בכל פעם ששתי שורות מכילות את אותם נתונים בעמודה הראשונה ובעמודה השנייה של הגיליון.

תורמים

הדוגמה הזו נוצרה על ידי Romain Vialard, מומחה למפתחים של Google. כדאי לעקוב אחרי Romain ב-Twitter @romain_vialard

הדוגמה הזו מנוהלת על ידי Google בעזרת מומחי המפתחים של Google.

השלבים הבאים