라이브러리 빠른 시작

스프레드시트 데이터에서 중복 행을 삭제하는 데 사용할 수 있는 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. 스크립트 이름을 Remove duplicate rows(중복 행 삭제)로 지정하고 이름 바꾸기를 클릭합니다.

  8. 배포 > 새 배포를 클릭합니다.

  9. 유형 선택 옆에 있는 배포 유형 사용 설정 배포 유형 사용 설정 아이콘 > 라이브러리를 클릭합니다.

  10. 라이브러리에 대한 설명(예: 중복 행 삭제)을 입력합니다. 라이브러리에 액세스할 수 있는 모든 사용자가 이 설명을 볼 수 있습니다.

  11. 배포를 클릭합니다.

  12. 왼쪽에서 프로젝트 설정 프로젝트 설정의 아이콘을 클릭합니다.

  13. ID에서 나중에 사용할 스크립트 ID를 복사합니다.

스크립트 실행

라이브러리를 사용하려면 해당 Apps Script 프로젝트에 대한 보기 권한이 있어야 합니다. 라이브러리를 만들었으므로 이를 사용하는 데 필요한 권한이 있습니다. 다른 사용자가 라이브러리를 사용하도록 하려면 Apps Script 프로젝트에 대한 보기 권한을 부여합니다.

라이브러리를 사용하려면 다음 단계를 따르세요.

  1. 행이 중복된 데이터가 포함된 Google Sheets 스프레드시트를 엽니다. 샘플 스프레드시트를 사용하려면 중복 행 샘플 스프레드시트의 사본을 만듭니다.
  2. 확장 프로그램 > Apps Script를 클릭합니다.
  3. 라이브러리 옆에 있는 라이브러리 추가 를 클릭합니다.
  4. 스크립트 ID 섹션에 이전 섹션에서 복사한 라이브러리 Apps Script 프로젝트의 스크립트 ID를 붙여넣습니다.
  5. Look up을 클릭합니다.
  6. 버전 섹션에서 1을 선택합니다.
  7. 추가를 클릭합니다.
  8. 스크립트 편집기에서 코드를 삭제하고 아래 코드를 붙여넣습니다.

    function runLibrary() {
     Removeduplicaterows.removeDuplicates();
    }
    
  9. 함수 드롭다운에서 runLibrary를 선택합니다.

  10. 실행을 클릭합니다.

  11. 스프레드시트로 돌아가 중복 행이 없는 업데이트된 데이터를 확인합니다.

코드 검토

이 솔루션의 Apps Script 코드를 검토하려면 아래의 소스 코드 보기를 클릭합니다.

소스 코드 보기

먼저 스크립트는 스프레드시트를 한 번 호출하여 모든 데이터를 가져옵니다. 시트를 행별로 읽을 수도 있지만 JavaScript 작업은 Spreadsheet와 같은 다른 서비스와 통신하는 것보다 훨씬 빠릅니다. 호출 횟수가 적을수록 더 빠르게 실행됩니다. 이는 각 스크립트 실행의 최대 실행 시간이 6분이기 때문에 중요합니다.

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

data 변수는 시트의 모든 값을 포함하는 JavaScript 2차원 배열입니다. newData는 스크립트가 중복되지 않는 모든 행을 배치하는 빈 배열입니다.

sheets/removingDuplicates/removingDuplicates.gs
const newData = Object.values(uniqueData);

첫 번째 for 루프는 data 2차원 배열의 각 행을 반복합니다. 각 행의 경우 두 번째 루프는 일치하는 데이터가 있는 다른 행이 이미 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;
    }

위의 조건문은 시트의 첫 번째 열과 두 번째 열에 동일한 데이터가 있는 두 행이 있을 때마다 중복을 찾습니다.

참여자

이 샘플은 Google 개발자 전문가인 Romain Vialard가 만들었습니다. 트위터에서 @romain_vialard를 팔로우하여 로맹을 만나보세요.

이 샘플은 Google에서 Google 개발자 전문가의 도움을 받아 유지관리합니다.

다음 단계