GCP/Apps Script

Apps Script로 Google Sheets의 column들을 Group화 하여 화면 심플하게 보기

whistory 2023. 4. 13. 10:42
반응형

 

💡 Apps Script로 Google Sheets 셀 그룹을 지정해본다.

 

엑셀 작업을 하다 보면, 컬럼이 많아지는 경우가 발생한다.

(내 경우는 컬럼이 210개까지 경험해봤다..)

 

컬럼이 많아져 발생되는 이슈는 한눈에 데이터를 확인하거나, 원하는 데이터를 찾기 힘들 경우가 많아진다.

 

 

 

아래와 같이 A ~ O 까지 데이터를 가진 시트가 잇다.

 

 

데이터를 구분 할 수 있는 명칭들만 보여주고, 하위 데이터들은 숨겨주는 Grouping 기능을 구현해본다.

 

 

 

1. 그룹 생성하기

일단 목록정보의 목록명 아래의 D~F column을 그룹화 해본다.

 

 

function groupSheet() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("개방목록현황_3월");

  // 그룹 생성
  const range = sheet.getRange("D:F");
  range.shiftColumnGroupDepth(1);
}

 

 

그룹을 접는 [-] 버튼을 클릭하면, 하위 컬럼은 숨겨진다.

 

 

 

2. 여러 그룹 생성하기

그룹화 할 데이터들을 선정하고, 아래와 같이 컬럼 단위의 그룹화를 진행하면 가독성이 향상된다.

function groupSheet() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("개방목록현황_3월");

  // 그룹 생성
  const range1 = sheet.getRange("D:F");
  range1.shiftColumnGroupDepth(1);

  const range2 = sheet.getRange("I:J");
  range2.shiftColumnGroupDepth(1);

  const range3 = sheet.getRange("L:N");
  range3.shiftColumnGroupDepth(1);
}

 

 

 

 

3. 그룹 접기 / 펼치

근데 실행 했을 때, 그룹이 펼쳐져 있다. 펼쳐져 있으면 의미가 없다.

실행과 동시에 그룹들을 접어주는 코드를 추가해준다.

function groupSheet() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("개방목록현황_3월");

  // 그룹 지우기
  const group1 = sheet.getColumnGroup(3,1);
  group1.remove();

  const group2 = sheet.getColumnGroup(8,1);
  group2.remove();

  const group3 = sheet.getColumnGroup(11,1);
  group3.remove();

  // 그룹 생성
  const range1 = sheet.getRange("D:F");
  range1.shiftColumnGroupDepth(1);

  const range2 = sheet.getRange("I:J");
  range2.shiftColumnGroupDepth(1);

  const range3 = sheet.getRange("L:N");
  range3.shiftColumnGroupDepth(1);
  
  // 영역 별 그룹 접기
  range1.collapseGroups();
  range2.collapseGroups();
  range3.collapseGroups();
}

아래와 같이 시트의 모든 그룹을 접을 수 도 있다.

function groupSheet() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("개방목록현황_3월");

  // 그룹 생성
  const range1 = sheet.getRange("D:F");
  range1.shiftColumnGroupDepth(1);

  const range2 = sheet.getRange("I:J");
  range2.shiftColumnGroupDepth(1);

  const range3 = sheet.getRange("L:N");
  range3.shiftColumnGroupDepth(1);

  sheet.collapseAllColumnGroups();  // sheet에 존재하는 그룹 모두 접기
}

그룹을 펼쳐줄 때는 expandGroups()를 사용하면 된다.

range.expandGroups()

 

 

4. 그룹 삭제

 

해당 스크립트를 또 실행하면 그룹이 두개 생긴다.

1depth를 추가하다보니 depth가 2개가 된다.

range.shiftColumnGroupDepth(1);

 

이럴 경우에는 remove() 로 그룹을 지우고, 다시 그룹을 생성하면 된다.

function groupSheet() {
  const sheet = SpreadsheetApp.getActive().getSheetByName("개방목록현황_3월");

  // 그룹 지우기
  const group1 = sheet.getColumnGroup(3,1);
  group1.remove();

  const group2 = sheet.getColumnGroup(8,1);
  group2.remove();

  const group3 = sheet.getColumnGroup(11,1);
  group3.remove();

  // 그룹 생성
  const range1 = sheet.getRange("D:F");
  range1.shiftColumnGroupDepth(1);

  const range2 = sheet.getRange("I:J");
  range2.shiftColumnGroupDepth(1);

  const range3 = sheet.getRange("L:N");
  range3.shiftColumnGroupDepth(1);
  
  // 그룹 닫기
  range1.collapseGroups();
  range2.collapseGroups();
  range3.collapseGroups();
}
반응형