여러개의 체크박스를 검색하여 일괄체크 하는 예제 입니다.
- 체크박스 검색선택 : 입력 받은 문자열이 B 열에 있으면 체크합니다.
- 체크박스 검색해제 : 체크된 상태에서 특정 문자열이 있으면 체크 해제 합니다.
// 문자열 검색하여 체크하기
function searchChecked()
{
var sheet = SpreadsheetApp.getActive().getSheetByName("검색체크하기");
// 질문 창 만들기
var ui = SpreadsheetApp.getUi();
var result = ui.prompt("검색할 문자열 입력");
// 받은 질문은 findword 로 들어감
var button = result.getSelectedButton();
if (button === ui.Button.OK) {
var findword = result.getResponseText();
}
else if (button === ui.Button.CLOSE) return;
// sheet에서 데이터가 있는 테이블을 2차원 배열(values)로 만듬
var checkRange= sheet.getDataRange()
var values = checkRange.getValues();
// 배열을 루프를 둘립니다.
for(var i = 1 ; i < values.length; i++)
{
// 종목명(values[i][1])에 findword 가 시작되는 열이 있음
if(values[i][1].indexOf(findword) !=-1)
values[i][0] = true; // 체크 합니다.
else
values[i][0] = false; // 아니면 체크해제
}
// 2차원 배열을 checkRange 에 다시 설정
checkRange.setValues(values);
}
질문 창을 만드는 방법으로 SpreadsheetApp.getUI() 의 ui.prompt 를 이용
var result = ui.prompt("검색할 문자열 입력");
result.getResponseText() 읽어들여 변수 findword에 넣습니다.
getDataRange() 로 데이터가 들어 있는 테이블을 2차원 배열인 values 로 넣고 루프를 돌립니다.
values[1][0] 는 2행 1열, values[2][1] 3행 2열 이 됩니다.
1 부터 돌리는 이유는 1행은 0 인데 테이블 헤더가 위치되어 있기 때문입니다. 실제 데이터는 1행 부터 시작합니다.
돌리면서 if(values[i][1].indexOf(findword) !=-1) 2행에 종목명인데 indexOf 명령어로 findword 문자열이 포함되어 있으면 value[i][0] = true 로 체크 합니다.
다음 소스는 Uncheck 함수 입니다. 체크되어 있는 상태에서 특정 문자열이 있는 행의 체크박스를 해제합니다.
체크함수와 동일하나 체크하는 부분을 제외하는 부분이 다릅니다.
// 선택된 상태에서 검색된 문자열이 포함된 체크박스해제
function searchUnChecked(e)
{
var sheet = SpreadsheetApp.getActive().getSheetByName("검색체크하기"); // 이벤트 시 삭제
var ui = SpreadsheetApp.getUi();
var result = ui.prompt("체크해제할 문자열 입력");
var button = result.getSelectedButton();
if (button === ui.Button.OK) {
var findword = result.getResponseText();
} else if (button === ui.Button.CLOSE)
{
return;
}
var checkRange= sheet.getDataRange()
var values = checkRange.getValues();
for(var i = 1 ; i < values.length; i++)
{
if(values[i][1].indexOf(findword) !=-1)
values[i][0] = false; // 해제 이므로 false 값 설정
// else values[i][0] = true; //
}
checkRange.setValues(values);
}
예제는 다음 시트에 있습니다.
체크박스 다루기
체크박스구현 종목명,종목코드,현재가,등락률,전일대비,전일주가,거래량,시장정보,기준일시,수집일시 현대차,005380 삼성전자,005930 현대중공업,009540 카카오,035720 LG화학,051910 TIGER 200,102110 KODEX 철
docs.google.com
'컴퓨터 활용 > 구글스프레드시트 응용' 카테고리의 다른 글
온라인 쇼핑몰 상품 가격 감시 & 알리미@ 구글 스프레드 시트 구현 (0) | 2023.08.12 |
---|---|
체크박스 선택 하여 국내주가 실시간 수집하기 (0) | 2022.08.22 |
구글 스프레드 시트에서 체크박스 다루기 4 - 선택 후 라인삭제하기 (0) | 2022.08.14 |
구글 스프레드 시트에서 체크박스 다루기 3 - 라디오박스 구현 (0) | 2022.08.13 |
구글 스프레드시트에서 체크박스 다루기 2 - 토글 스위치(toggle Switch) (0) | 2022.08.12 |