GCP/Apps Script

Apps Script로 Google Sheets의 Filter 설정하기

whistory 2023. 3. 2. 15:23
반응형

💡 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();
  }
}

 

 

 

 

이 작업은

데이터를 조회 하고, 특정조건을 지속적으로 추출해야 할때

사용하면 좋을것 같다.

반응형