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

ליצור ספריית 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. לוחצים על Deploy (פריסה).

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

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

מריצים את הסקריפט

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

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

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

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

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

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

בדיקת הקוד

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

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

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

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

תורמים

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

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

השלבים הבאים