반응형
💡 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();
}
반응형
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 Google Sheets의 데이터를 선택 해 명세서나 세금계산서, invoice 등과 같은 양식을 pdf 파일로 생성해 이메일로 전송하기 (0) | 2023.04.19 |
---|---|
Apps Script로 ChatGPT의 openAPI를 Google Sheets에서 호출하기 (0) | 2023.04.14 |
Apps Script로 Google Sheets의 범위 이름 설정을 이용해 셀 관리하기 (0) | 2023.04.12 |
Apps Script로 Google Sheets에서 상품 관리 sheet 만들기 (0) | 2023.04.11 |
Apps Script로 웹사이트의 table 데이터를 Google Sheets로 불러오기 (0) | 2023.03.29 |