GCP/Apps Script

Apps Script로 Google Sheets의 특정 데이터들을 가진 시트들만 모아 분류하기

whistory 2023. 5. 22. 08:39
반응형

아래와 같은 시트가 있다.

location(B 컬럼) 별로 새로운 시트를 만들어 나누고 싶다.

 

1. location 의 중복을 제거한다.

function seperateSheet () {
  const ss    = SpreadsheetApp.getActive();
  const sheet = ss.getSheetByName("locations");

  // 중복제거
  const keys = sheet.getRange(1, 2, sheet.getLastRow()-1, 1).getValues();
  let dupArr = new Array();
  for ( i in keys ) {
    dupArr.push(keys[i][0]);
  }
  let uniqueKeys = [...new Set(dupArr)];
  console.log(uniqueKeys);
}

 

 

2. 중복 제거 된 데이터를 통해 location 별 데이터를 추출한다.

function seperateSheet () {
  const ss    = SpreadsheetApp.getActive();
  const sheet = ss.getSheetByName("locations");

  // 중복제거
  const keys = sheet.getRange(1, 2, sheet.getLastRow()-1, 1).getValues();
  let dupArr = new Array();
  for ( i in keys ) {
    dupArr.push(keys[i][0]);
  }
  let uniqueKeys = [...new Set(dupArr)];

  // 전체 데이터 추출
  const values = sheet.getRange(1, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();

  // key 값 별로 데이터 분리
  for ( j in uniqueKeys ) {
    var locationData = values.filter(function(item) { return item[1]=== uniqueKeys[j]; });
    console.log(locationData);
  }
}

 

 

3. 나눈 데이터를 새로운 시트로 생성한다.

function seperateSheet () {
  const ss    = SpreadsheetApp.getActive();
  const sheet = ss.getSheetByName("locations");

  // 중복제거
  const keys = sheet.getRange(1, 2, sheet.getLastRow()-1, 1).getValues();
  let dupArr = new Array();
  for ( i in keys ) {
    dupArr.push(keys[i][0]);
  }
  let uniqueKeys = [...new Set(dupArr)];

  // 전체 데이터 추출
  const values = sheet.getRange(1, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();

  // key 값 별로 데이터 분리
  for ( j in uniqueKeys ) {
    var locationData = values.filter(function(item) { return item[1]=== uniqueKeys[j]; });
    var newSheet = ss.insertSheet(uniqueKeys[j]);
    newSheet.getRange(1,1,locationData.length, locationData[0].length).setValues(locationData);
    console.log(`${uniqueKeys[j]} 시트 생성완료`);
  }
}

 

 

 

실행로그

 

생성된 탭들 확인

 

실제 생성 시트

반응형