반응형
💡 Apps Script로 Google Sheets에서 필터를 생성하고, 조건을 적용해 본다.
나아가 필터 조건이 적용된 데이터를 새로운 시트로 추출해본다.
아래와 같은 데이터가 있다.
필터 생성하기
function createFilters() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("tempature_all");
const range = sheet.getRange("A:E");
range.createFilter();
}
필터 삭제하기
function createFilters() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("tempature_all");
const range = sheet.getRange("A:E");
const getFilter = range.getFilter();
getFilter.remove();
}
필터로 일치하는 데이터 가져오기
country 가 ‘KR’인 데이터만 추출한다.
function createFilters() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("tempature_all");
const range = sheet.getRange("A:E");
const getFilter = range.getFilter();
if ( getFilter == null ) {
const newFilter = range.createFilter();
const coll1 = 1;
const Filter_Criteria1 = SpreadsheetApp.newFilterCriteria().whenTextContains(["KR"]);
newFilter.setColumnFilterCriteria(coll1,Filter_Criteria1);
} else {
getFilter.remove();
}
}
중복 필터 적용
country 가 ‘KR’인 데이터만 추출한다.
temperature_air_avg_avg 가 50을 초과하는 데이터만 추출한다.
function createFilters() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("tempature_all");
const range = sheet.getRange("A:E");
const getFilter = range.getFilter();
if ( getFilter == null ) {
const newFilter = range.createFilter();
const coll1 = 1;
const Filter_Criteria1 = SpreadsheetApp.newFilterCriteria().whenTextContains(["KR"]);
newFilter.setColumnFilterCriteria(coll1,Filter_Criteria1);
const coll3 = 3;
const Filter_Criteria3 = SpreadsheetApp.newFilterCriteria().whenNumberGreaterThan(50);
newFilter.setColumnFilterCriteria(coll3,Filter_Criteria3);
} else {
getFilter.remove();
}
}
추출한 데이터를 새로운 sheet 로 저장한다.
필터로 추출된 데이터를 새로운 sheet에 저장하고,
생성한 필터는 제거한다.
function createFilters() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("tempature_all");
const range = sheet.getRange("A:E");
const getFilter = range.getFilter();
if ( getFilter == null ) {
const newFilter = range.createFilter();
const coll1 = 1;
const Filter_Criteria1 = SpreadsheetApp.newFilterCriteria().whenTextContains(["KR"]);
newFilter.setColumnFilterCriteria(coll1,Filter_Criteria1);
const coll3 = 3;
const Filter_Criteria3 = SpreadsheetApp.newFilterCriteria().whenNumberGreaterThan(50);
newFilter.setColumnFilterCriteria(coll3,Filter_Criteria3);
const newSheet = ss.insertSheet();
newSheet.setName("KR_Data");
range.copyTo(newSheet.getRange(1,1));
newFilter.remove();
} else {
getFilter.remove();
}
}
이 작업은
데이터를 조회 하고, 특정조건을 지속적으로 추출해야 할때
사용하면 좋을것 같다.
반응형
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 Google Sheets의 활성(선택)영역 지정 (1) | 2023.03.08 |
---|---|
Apps Script로 Google Sheets의 정렬(sort) 적용하기 (1) | 2023.03.07 |
Apps Script로 Google Sheets의 영역(카테고리) 별 음영 처리 (0) | 2023.02.17 |
Apps Script로 Google Sheets의 검색조건 Dropdown 선택 시 다른 셀에 하위정보 뿌려주기 (vlookup 대체) (1) | 2023.02.16 |
Apps Script로 이미지파일/PDF 파일 OCR 하기 (0) | 2023.02.15 |