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]} 시트 생성완료`);
}
}
실행로그
생성된 탭들 확인
실제 생성 시트
반응형