구글 스프레드시트

구글 스프레드시트 - 셀 값이 바뀌었을 때 다른 셀 값 지우기

별동산 2024. 8. 27. 08:21
반응형

1. 문제

A2셀의 값이 남산동이었는데, 청계동으로 바꾸면 C열의 값은 청계동으로 바뀌는데, D2셀의 값은 남산동이어서 에러 표시로 셀 오른쪽 위에 빨간 세모가 표시됩니다

 

https://docs.google.com/spreadsheets/d/1Y8KgAnfTNig6niQ9bBKgQvCdSGXrFGpSphQI6d06RhQ/edit?usp=sharing

 

2. 해법

가. Apps Script 열기

구글 스프레드시트는 엑셀과 다르게 VBA가 아니라 Apps Script를 사용합니다.

 

위에서 Apps Script를 누르면 새로운 탭이 열리면서 '제목 없는 프로젝트'가 열리고, 왼쪽에 Code.gs가 있고, 오른쪽에는 function myFunction이 생성됩니다.

 

그리고, 왼쪽 코드 편집기 아이콘 부분을 누르면

아이콘 옆에 개요, 편집기, 프로젝트 기록, 트리거, 실행, 프로젝트 설정이란 아이콘 명이 표시됩니다.

 

나. 트리거

편집에서 함수(엑셀의 매크로)를 만들면 실행을 통해 코드를 실행할 수 있지만

어떤 사건(이벤트)이 일어났을 때 자동으로 실행되게 할 수는 없습니다.

 

따라서, 트리거를 눌러 어떤 조건에서 원하는 함수(매크로)가 실행될 것인지 정해야 합니다.

왼쪽 시계모양의 트리거 아이콘을 누르면 오른쪽에 트리거 창이 열리는데, 중간 부분에 '새 트리거를 만듭니다'가 있고, 오른쪽 아래에 '새 트리거 추가'가 있는데 아무거나 누르면 

 

 

새 트리거를 설정할 수 있는 상태가 됩니다.

'실행할 함수 선택'은 현재 myFunction만 있기 때문에 myFunction이라고 표시되고,

그 아래 실행할 배포 선택이 있는데, 누르면 Head만이 있으므로 넘어가고, 

 

'이벤트 소스 선택'을 누르면

'스프레드시트에서'와 '시간 기반', '캘린더'가 있는데, 값이 바뀌었을 때 처리하는 것이므로 '스프레드시트에서'를 선택해야 하므로 그대로 두면 됩니다.

 

'이벤트 유형 선택'을 누르면 '열릴 시', '수정 시', '변경 시', '양식 제출 시'가 있는데, '수정 시' 또는 '변경 시'를 누르면 되는데, '수정 시'를 선택하겠습니다.

 

그리고, 오른쪽 위에 '트리거 실패 알림 설정'이 있는데, 넘어가고,

오른쪽 아래 저장 버튼을 누릅니다.

 

그러면 'Sign in with Google' 단계가 표시되는데, 구글 ID를 선택합니다.

 

 

그러면 경고창이 표시되는데, 무시하기 위해 아래 'Advanced' 부분을 누르고,

 

맨 아래 'Go to 제목 없는 프로젝트 (unsafe)를 클릭합니다.

 

그러면 다시 access를 허용할 것인지 묻는데, Allow를 클릭합니다.

 

 

그러면 다시 트리거 초기 화면으로 돌아오는데, 저장 버튼을 다시 누릅니다.

그러면 트리거 목록에 이벤트가 '스프레드시트에서 - 수정 시'이고, 실행할 함수는 myFunction인 트리거가 표시됩니다.

 

다. 코드 작성

실행할 코드를 수정하기 위해

편집기 아이콘을 누릅니다.

 

myFuntion 안에 아래 내용을 붙여 넣습니다.

function myFunction(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;

  // 특정 셀 A2가 수정될 때
  if (range.getA1Notation() == "A2") {
    // 초기화할 셀 D2
    sheet.getRange("D2").clearContent();
  }
}

 

 

그러면 아래와 같이 되는데, 윗부분의 저장 아이콘을 클릭해서 저장하고, '제목 없는 프로젝트'를 더블 클릭해서 수정합니다.

 

코드의  내용은 ChatGPT에서 물어서 받은 답을 편집한 것으로(트리거에 대한 내용이 없어서 헤맴)

e를 변수로 받아

시트명을 sheet 변수에 대입하고, 셀 주소를 range 변수에 대입한 다음

A2셀의 값이 수정될 때 D2셀의 내용을 지우는 것입니다.

 

라. 실행

그리고, 스프레드시트 탭을 클릭하고, A2셀의 내용을 '남산동'으로 수정하면

D2셀에 있던 '부산광역시 금정구 남산동'이 지워지고, 빨간 세모가 없어집니다.

 

콤보 상자 버튼을 누르면 남산동을 포함한 목록이 표시되어 선택할 수 있는 것은 동일합니다.

반응형