شروع سریع کتابخانه

یک کتابخانه 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. روی Deploy > New Deployment کلیک کنید.

  9. در کنار Select type روی Enable Deployment Types کلیک کنید نماد فعال کردن انواع استقرار > کتابخانه

  10. شرحی از کتابخانه را وارد کنید، مانند حذف ردیف‌های تکراری . هر کسی که به کتابخانه دسترسی داشته باشد می تواند این توضیحات را مشاهده کند.

  11. روی Deploy کلیک کنید.

  12. در سمت چپ، روی تنظیمات پروژه کلیک کنید نماد تنظیمات پروژه .

  13. در بخش شناسه‌ها ، شناسه اسکریپت را برای استفاده در مرحله بعد کپی کنید.

اسکریپت را اجرا کنید

برای استفاده از کتابخانه، باید حداقل مجوزهای مشاهده پروژه Apps Script آن را داشته باشید. از زمانی که کتابخانه را ایجاد کردید، مجوزهای لازم برای استفاده از آن را دارید. اگر می‌خواهید به دیگران اجازه دهید از کتابخانه استفاده کنند، به آنها اجازه مشاهده پروژه Apps Script را بدهید.

برای استفاده از کتابخانه مراحل زیر را انجام دهید:

  1. صفحه‌گسترده Google Sheets را باز کنید که دارای داده‌هایی با ردیف‌های تکراری است. برای استفاده از صفحه‌گسترده نمونه، از صفحه‌گسترده ردیف‌های تکراری نمونه کپی کنید .
  2. روی برنامه‌های افزودنی > اسکریپت برنامه‌ها کلیک کنید.
  3. در کنار کتابخانه ها ، روی افزودن کتابخانه کلیک کنید.
  4. در بخش Script ID ، شناسه اسکریپت را از پروژه کتابخانه Apps Script که در بخش قبلی کپی کرده‌اید، جای‌گذاری کنید.
  5. روی Look up کلیک کنید.
  6. در بخش Version ، 1 را انتخاب کنید.
  7. روی افزودن کلیک کنید.
  8. هر کدی را در ویرایشگر اسکریپت حذف کنید و کد زیر را جایگذاری کنید.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. در منوی تابع، runLibrary را انتخاب کنید.

  10. روی Run کلیک کنید.

  11. برای مشاهده داده های به روز شده بدون ردیف های تکراری، به صفحه گسترده بازگردید.

کد را مرور کنید

برای بررسی کد Apps Script برای این راه حل، روی مشاهده کد منبع در زیر کلیک کنید:

کد منبع را مشاهده کنید

ابتدا اسکریپت یک تماس با صفحه گسترده برقرار می کند تا همه داده ها را بازیابی کند. شما می توانید انتخاب کنید که برگه را ردیف به ردیف بخوانید، اما عملیات جاوا اسکریپت به طور قابل توجهی سریعتر از صحبت کردن با سرویس های دیگر مانند صفحه گسترده است. هرچه تماس های کمتری داشته باشید، سریع تر می شود. این مهم است زیرا هر اجرای اسکریپت حداکثر 6 دقیقه زمان اجرا دارد.

sheets/removingDuplicates/removingDuplicates.gs
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();

data متغیر یک آرایه دو بعدی جاوا اسکریپت است که حاوی تمام مقادیر موجود در برگه است. 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، یک متخصص توسعه دهنده گوگل ایجاد شده است. رومن را در توییتر @romain_vialard دنبال کنید.

این نمونه توسط گوگل با کمک کارشناسان توسعه دهنده گوگل نگهداری می شود.

مراحل بعدی