본문 바로가기

컴퓨터 활용/구글스프레드시트 응용

구글 스프레드 시트에서 체크박스 다루기 3 - 라디오박스 구현

구글 스프레드 시트에서는 체크박스만 존재하고 라디오 박스는 없습니다. 
행별로 하나만 선택이 가능한 라디오 박스를 구현하는 예제 입니다.


예제는 다음 시트에 있습니다. 
https://docs.google.com/spreadsheets/d/1MbsSABTjB1bvNUXTC8Ur5EJY65YkJSwRa0GMN2JDxIE/edit#gid=2066913012

 

체크박스 다루기

체크박스구현 종목명,종목코드,현재가,등락률,전일대비,전일주가,거래량,시장정보,기준일시,수집일시 현대차,005380,196,000,0.00%,0,196,000,599,309,코스피,2022-08-01 16:12:00,2022-08-01 16:27:06 삼성전자,005930,

docs.google.com

 

다음 ensureSingleCheckboxChecked 함수를 수정 트리거에 걸어주면 동작 됩니다.
/* 
 *  구글 시트에서 라디오 박스 구현 
 */ 
function ensureSingleCheckboxChecked(e) 
{

  var sheet = e.range.getSheet();
  if(sheet.getName() !="라디오박스구현") return; // 라디오박스 구현 시트에만 적용 

  if(e != null &&  // 이벤트가 동작하고
    e.range.rowStart === e.range.rowEnd && // 수정된 시작행 , 끝 행 
    e.range.columnStart === 1 && // 수정된 시작열
    e.range.columnEnd === 1)  // 수정된 끝 열
    {
      if(e.oldValue === "false" && e.value === "TRUE") { // 이전 값이 false 이고 새 값이 true 이면 
        uncheckOtherCheckboxes(e.range.rowStart); // 시작 행을 매개변수로 전달
      }
    }
}

function uncheckOtherCheckboxes(ignoreRow) 
{
 
 var range = SpreadsheetApp.getActive().getSheetByName("라디오박스구현").getRange("A:A");
 var values = range.getValues();

 // 배열(체크박스있는 열)을 루프 돌려서 선택된 
 values.forEach(function (row, rowinx) 
 {
   if(rowinx != 0 && ignoreRow != (rowinx + 1)) { // 첫 행제외, 무시할 열이 아니면 모두 언체크 
     values[rowinx][0] = false; 
   }  
 });
 
 range.setValues(values);
}

/**

  다음 ensureSingleCheckboxChecked 함수를 수정 트리거에 걸어주면 동작 됩니다.
  ScriptApp.newTrigger("ensureSingleCheckboxChecked")
   .forSpreadsheet(SpreadsheetApp.getActive()).onEdit().create();
*/

e.range.rowStart  = 선택된 시작행 
e.range.rowEnd = 선택  끝 행 
e.range.columnStart  = 선택 시작열
e.range.columnEnd  = 선택  끝 열

4개 셀이 선택되면 1,2,2,2로 들어감

e.OldValue 는 수정전 셀에 있던 값  / e.value
수정된 셀 값  : FALSE , TRUE 이면 체크된 상태를 의미함 

동작방식 
1. 수정 모드로 트리거가 동작되면   첫 행을 제외하고 나머지  1 열의 체크 박스가 체크 될 때 이벤트가 발생
2. 현재 행, 열의 체크 박스가 클릭 될 때 이전 값이 FALSE 에서 TRUE로 변경(체크될 때) 행번호를 알아냄
3. uncheckOtherCheckboxes 함수의 매개변수로 행번호가 들어 가서 해당 행만 놔두고 나머지는 언체크 함.

위의 소스는 SpreadSheet Dev 를 참고 했습니다  

 

Radio buttons in Google Sheets using Apps Script

Radio buttons in Google Sheets using Apps Script A radio button is a user interface element that lets users select a single option from a number of different (and usually mutually exclusive) options. In this tutorial, I will show you how to build radio-but

spreadsheet.dev