일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Python
- Google Spreadsheet
- Excel
- 파이썬
- numpy
- gas
- Github
- PostgreSQL
- matplotlib
- Google Excel
- Apache
- SQL
- Java
- array
- c#
- PySpark
- google apps script
- math
- Kotlin
- Tkinter
- PANDAS
- django
- hive
- dataframe
- string
- list
- GIT
- Mac
- Redshift
- Today
- Total
달나라 노트
Google Apps Script : createFilter, getFilter (Script로 filter 조작하기) 본문
Google Apps Script : createFilter, getFilter (Script로 filter 조작하기)
CosmosProject 2021. 8. 5. 00:22
Script로 엑셀의 필터를 생성하고 조작해봅시다.
현재 시트 정보는 위와 같습니다.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getRange('B2:D8').createFilter();
}
코드는 위와 같습니다.
- var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
Script를 이용해 Spreadsheet를 조작하려면 항상 Spreadsheet 정보를 얻어와야 합니다.
getActiveSpreadsheet를 이용해 spreadsheet 객체를 얻어옵니다.
- spreadsheet.getRange('B2:D8').createFilter();
B2:D8 범위를 getRange를 통해 얻어옵니다.
createFilter method를 통해 해당 범위에 filter를 생성합니다.
Script를 실행한 결과 현재 Active sheet인 Sheet1의 B2:D8 범위에 filter가 생긴 것을 볼 수 있습니다.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getRange('B2:D8').getFilter().remove();
}
위처럼 코드를 적어봅시다.
- spreadsheet.getRange('B2:D8').getFilter().remove();
getFilter() = B2:D8 범위에 걸린 Filter 정보를 얻어옵니다.
remove() = filter를 삭제합니다.
코드 실행 결과 걸렸던 필터가 삭제된걸 알 수 있죠.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getActiveSheet().getFilter().remove();
}
filter의 해제는 굳이 filter범위를 명시하지 않고
getActiveSheet를 통해 현재 Active sheet 정보를 얻어오고
getFilter를 통해 Active sheet에 존재하는 Filter 정보를 얻어온다음
remove를 통해 filter를 모두 해제시킬 수 있습니다.
이제 필터를 조작해봅시다.
아래 코드는 C컬럼에서 a라는 값을 숨기는 filter 조작을 나타낸 코드입니다.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getRange('B2:D8').createFilter();
var filter_condition = SpreadsheetApp.newFilterCriteria().setHiddenValues(['a']);
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(3, filter_condition);
}
- var filter_condition = SpreadsheetApp.newFilterCriteria().setHiddenValues(['a']);
filter 조작을 하려면 먼저 filter condition을 객체의 형태로 설정해야합니다.
newFilterCriteria() = 새로운 Filter Cirteria(조건)를 설정합니다.
setHiddenValues(['a']) = a라는 값을 숨기는 조건을 의미합니다.
- spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(3, filter_condition);
spreadsheet.getActiveSheet() = spreadsheet에서 active된 sheet의 정보를 불러옵니다.
getFilter() = active spreadsheet에 존해자는 filter정보를 불러옵니다.
setColumnFilterCriteria(3, filter_condition) = Filter 조건을 설정합니다. 3은 C컬럼을 의미합니다. filter_condition은 위에서 설정한 filter criteria의 조건 객체입니다.
여기서 주의할건 setColumnFilterCriteria에서 숫자 3의 의미는 C컬럼을 의미한다고 했습니다.
이것은 1 = A, 2 = B, 3 = C, 4 = D 등 컬럼을 숫자로 치환한것입니다.
filter가 걸린 범위가 B2:D8이라고 해서 이 범위 안에서의 세 번째 컬럼인 D 컬럼을 의미하는 것이 아니라는 내용을 알아둡시다.
위 코드를 실행한 결과입니다.
C컬럼에서 a값이 사라지도록 필터가 걸린 것을 알 수 있죠.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getRange('B2:D8').createFilter();
var filter_condition = SpreadsheetApp.newFilterCriteria().setHiddenValues(['a', 'c']);
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(3, filter_condition);
}
위처럼 setHiddenValues에서 숨길 값을 list의 형태로 전달하면 여러 값을 동시에 숨길 수 있습니다.
아래 이미지처럼요.
이번엔 filter 속에서 정렬을 해봅시다.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.getRange('B2:D8').createFilter();
spreadsheet.getActiveSheet().getFilter().sort(4, true);
}
- spreadsheet.getActiveSheet().getFilter().sort(4, true);
getActiveSheet().getFilter() = 현재 active sheet에 존재하는 filter 정보를 얻어옵니다.
sort(4, true) = 4컬럼(= D컬럼) 기준으로 오름차순(true) 정렬합니다. (내림차순은 true 대신 false라고 적으면 됩니다.)
결과를 보면 D컬럼 기준으로 오름차순이 된 걸 알 수 있습니다.
'Google Apps Script' 카테고리의 다른 글
Google Apps Script : getDataRegion (Ctrl + a 기능 구현, Data Region 선택하기) (1) | 2021.08.05 |
---|---|
Google Apps Script : insertSheet, setName (새로운 Sheet 만들기, 새로운 탭 만들기, sheet 이름 변경하기, 탭 이름 변경하기) (1) | 2021.08.05 |
Google Apps Script : setValue (Cell에 값 입력하기) (0) | 2021.08.04 |
Google Apps Script : setActiveSheet (원하는 Sheet 선택하기) (1) | 2021.08.04 |
Google Apps Script : Script function을 버튼에 할당하기 (0) | 2021.08.04 |