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

یک کتابخانه اسکریپت برنامه‌ها بسازید که بتوانید از آن برای حذف ردیف‌های تکراری در داده‌های صفحه گسترده استفاده کنید.

اهداف

  • اسکریپت را تنظیم کنید.
  • اسکریپت را اجرا کنید.

پیش‌نیازها

برای استفاده از این نمونه، به پیش‌نیازهای زیر نیاز دارید:

  • یک حساب گوگل (حساب‌های کاربری گوگل ورک‌اسپیس ممکن است نیاز به تأیید مدیر داشته باشند).
  • یک مرورگر وب با دسترسی به اینترنت.

اسکریپت را تنظیم کنید

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

  1. وارد حساب گوگل خود شوید.
  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. روی استقرار کلیک کنید.

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

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

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

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

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

  1. یک صفحه گسترده Google Sheets را که دارای داده‌هایی با ردیف‌های تکراری است، باز کنید. برای استفاده از یک صفحه گسترده نمونه، یک کپی از صفحه گسترده Sample duplicate rows ایجاد کنید .
  2. روی افزونه‌ها > اسکریپت برنامه‌ها کلیک کنید.
  3. در کنار کتابخانه‌ها ، روی کتابخانه کلیک کنید.
  4. در بخش شناسه اسکریپت ، شناسه اسکریپت را از پروژه کتابخانه Apps Script که در بخش قبل کپی کرده‌اید، جایگذاری کنید.
  5. روی «جستجو» کلیک کنید.
  6. در بخش نسخه ، عدد ۱ را انتخاب کنید.
  7. روی افزودن کلیک کنید.
  8. هر کدی را که در ویرایشگر اسکریپت وجود دارد حذف کنید و کد زیر را جایگذاری کنید.

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

  10. روی اجرا کلیک کنید.

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

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

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

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

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

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 دنبال کنید.

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

مراحل بعدی

،

یک کتابخانه اسکریپت برنامه‌ها بسازید که بتوانید از آن برای حذف ردیف‌های تکراری در داده‌های صفحه گسترده استفاده کنید.

اهداف

  • اسکریپت را تنظیم کنید.
  • اسکریپت را اجرا کنید.

پیش‌نیازها

برای استفاده از این نمونه، به پیش‌نیازهای زیر نیاز دارید:

  • یک حساب گوگل (حساب‌های کاربری گوگل ورک‌اسپیس ممکن است نیاز به تأیید مدیر داشته باشند).
  • یک مرورگر وب با دسترسی به اینترنت.

اسکریپت را تنظیم کنید

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

  1. وارد حساب گوگل خود شوید.
  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. روی استقرار کلیک کنید.

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

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

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

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

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

  1. یک صفحه گسترده Google Sheets را که دارای داده‌هایی با ردیف‌های تکراری است، باز کنید. برای استفاده از یک صفحه گسترده نمونه، یک کپی از صفحه گسترده Sample duplicate rows ایجاد کنید .
  2. روی افزونه‌ها > اسکریپت برنامه‌ها کلیک کنید.
  3. در کنار کتابخانه‌ها ، روی کتابخانه کلیک کنید.
  4. در بخش شناسه اسکریپت ، شناسه اسکریپت را از پروژه کتابخانه Apps Script که در بخش قبل کپی کرده‌اید، جایگذاری کنید.
  5. روی «جستجو» کلیک کنید.
  6. در بخش نسخه ، عدد ۱ را انتخاب کنید.
  7. روی افزودن کلیک کنید.
  8. هر کدی را که در ویرایشگر اسکریپت وجود دارد حذف کنید و کد زیر را جایگذاری کنید.

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

  10. روی اجرا کلیک کنید.

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

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

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

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

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

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 دنبال کنید.

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

مراحل بعدی