본문 바로가기
구글 앱 스크립트

구글 앱 스크립트 사용법: 체크박스를 넣어보자! [3]

by parkjp 2023. 11. 25.

 

서론

 

지난 글에 이어서 이번 포스팅에서는 체크박스를 앱 스크립트로 넣는 법을 알아보겠습니다.

 

지난 포스팅을 안 보신분은 아래 링크를 통해 보실 수 있습니다.

 

 

https://developer-jp.tistory.com/167

 

구글 앱 스크립트 사용법: 스프레드시트 자동화 왕초보 예제 [2]

서론 이번 글은 지난 글에 이어서 작성하는 것 입니다. 지난 글을 안 보신분은 아래 링크를 클릭하셔서 참고하시고 이어서 보시면 될 것 같습니다. 구글 앱 스크립트 사용법: 스프레드시트 자동

developer-jp.tistory.com

 

 

구글 앱스 스크립트를 사용하여 체크박스 사용하기

 

지난 글에서는 원하는 셀 범위 내에 데이터를 한 번에 입력하는 것을 해보았습니다.

이번 포스팅에서는 체크박스를 넣고 사용하는 법을 해보겠습니다.

 

우선 기존 myFunction함수 안에 아래와 같이 입력해주세요.

반응형
function myFunction() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  const columnA = activeSheet.getRange(1, 1);
  columnA.insertCheckboxes();
}

 

위와 같이 입력하신 후 myFunction함수를 저장하고 실행시켜 주세요.

제대로 실행하셨다면 아래와 같이 스프레드시트에 적용이 되어있을 겁니다.

 

체크박스 입력

 

우선 이전 포스팅에서 범위 내에 데이터를 입력하는 것을 해보았으니 응용해서 원하는 범위를 가져오고 

그 범위에 insertCheckboxes()라는 함수를 호출하면 적용이 되는 것을 보실 수 있습니다.

 

A1:A10 까지 범위에 체크박스를 넣고 싶으시다면 이전 포스팅을 보신 분들은 마찬가지로 하실 수 있으실 텐데요.

이제 체크박스를 넣었으니 어떻게 써야 되는지 알아보도록 하겠습니다.

 

저는 체크박스를 클릭하면 오른쪽 칸에 hello라는 데이터가 입력되고

폰트를 굵게 그리고 기울임 처리를 해보도록 하겠습니다.

이번에는 myFunction이라는 함수 말고 onEdit이라는 함수를 따로 만들겠습니다.

 

function myFunction() {
  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  const columnA = activeSheet.getRange(1, 1);
  columnA.insertCheckboxes();
}

function onEdit(e) {
  const range = e.range;
  const column = range.getColumn();

  if (column !== 1) return;

  let isChecked = range.isChecked();

  if (isChecked == null) return;

  const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = activeSpreadSheet.getActiveSheet();

  const columnB = activeSheet.getRange(1, 2);
  if (isChecked) {
    columnB.setValue("hello");
    columnB.setTextStyle(SpreadsheetApp.newTextStyle().setBold(true).setUnderline(true).build());
  } else {
    columnB.setValue(null);
    columnB.setTextStyle(SpreadsheetApp.newTextStyle().setBold(false).setUnderline(false).build());
  }
}

 

 

여기서 onEdit함수는 스프레드시트에서만 지원되는 기능으로 시트 내의 값이 변경이 될 때마다 호출이되는 함수입니다.

내가 만약 B1셀의 값을 수정했다면 e.range의 값은 B1셀을 바라보게 됩니다.

그러므로 range의 column을 가져온다면 B. 즉 2가 반환 됩니다. ( A부터 1임)

 

  if (column !== 1) return;

 

저는 지금 A1에 체크박스를 입력해 두었고 A1의 체크박스를 눌렀는지 안눌렀는지만 체크하기 위해 column이 1이 아니라면 아래 스크립트를 진행하지 않고 함수를 나가도록 설정했습니다.

 

  let isChecked = range.isChecked();

  if (isChecked == null) return;

 

isChecked()함수는 현재 해당 범위의 체크박스가 체크되어 있는지 아닌지를 반환합니다. 만약 해당 범위에 체크박스가 없다면 null을 반환하고 있습니다. 따라서 null값이 나온다면 아래 스크립트를 실행하지 않고 나가도록 설정했습니다.

 

  if (isChecked) {
    columnB.setValue("hello");
    columnB.setTextStyle(SpreadsheetApp.newTextStyle().setBold(true).setUnderline(true).build());
  } else {
    columnB.setValue(null);
    columnB.setTextStyle(SpreadsheetApp.newTextStyle().setBold(false).setUnderline(false).build());
  }

 

만약 체크했다면 columnB에 "hello"라는 데이터를 입력하고 폰트를 굵게 (bold), 밑줄 (underline) 처리를 하였습니다.

반대로 체크를 풀었다면 columnB에 빈 데이터를 입력하고 폰트를 굵게 (bold), 밑줄 (underline) 처리를  지우도록 하였습니다.

 

 

마무리

 

이번 포스팅에서는 지난 포스팅을 조금 응용하여 체크박스를 이용한 데이터 변경을 해보았습니다.

 

혹시나 구글 앱 스크립트에 대해 궁금하신 점이나 알고 싶으신 기능이 있으신 분은 직접 댓글로 질문해 주시면 해당 질문을 토대로 포스팅을 써보겠습니다.

 

다음 포스팅 바로가기

https://developer-jp.tistory.com/171

 

구글 앱 스크립트: 버튼을 이용한 랜덤 숫자 나열하기 [4]

서론 지난 글에 이어서 이번 포스팅에서는 버튼을 이용하여 랜덤 숫자를 나열하는 법을 해보겠습니다. 지난 포스팅을 보실 분은 아래 링크를 눌러주세요. https://developer-jp.tistory.com/168 구글 앱 스

developer-jp.tistory.com

 

반응형