본문 바로가기
업무효율성

챗지피티를 통한 앱스크립트 작성 실습

by datatribe 2025. 2. 2.

앱스크립트라고 하면 다들 개발의 영역으로 생각하여 대부분 "감히 내가 알아도 되나?" 라고 겁부터 먹는 경향이 있습니다.

당연히 스크립트이니 개발의 영역이 맞습니다만, 이제 개발이라는 것이 생성형 AI의 출현으로 더 이상 어렵지 않은 시대가 도래한 것 같습니다. 

 

따라서 저는 "굳이 개발을 심도 있게 모르더라도 어느 정도의 컨셉과 기획 능력만 있다면 CHAT GPT라는 생성형 AI를 통해 개발을 할 수 있는 시대가 되었다!!" 라고 말씀드리고 싶습니다.

즉, 여러분들은 생성형 AI를 여러분의 팀원으로 채용하시어 개발 프로젝트를 진행할 수 있게 된 것입니다!! 

실제 기업에서도 이러한 AI의 영향 때문인지 신입사원들을 많이 채용하지 않는 것 같습니다.

그럴 수 밖에 없는 것이 기획력과 개발 능력을 가지고 있는 시니어 직원들이 AI를 활용하여 기존에는 인력에 기댈 수 밖에 없었던 일들을 이제 혼자 해내는 상황이 종종 보입니다. 

결론적으로 이러한 환경 변화와 더불어 앞으로 미래의 직장에서 살아남기 위해서는 약간의 개발 컨셉과 기획 능력 그리고 생성형 AI를 다루는 능력 이 상당히 중요하다 할 수 있겠습니다.

 

 

그렇다면 오늘의 포스팅에서는 간단하게 챗지피티를 이용하여 간단하게 앱스크립트를 작성해보도록 하겠습니다.

 

위와 같이 데이터를 준비해보았습니다.

좌측 테이블에는 각 사원별로 인사고과를 책정하기 위해 사원별 실적이 나와 있고, 우측에는 실적구간별 고과가 있습니다.

D컬럼 [고과]에 인사고과에 정보를 입력하기 위해서수식을 활용하여 D컬럼 [고과]에 인사고과를 채워넣는 방법이 일반적이겠으나, 오늘은 주제가 CHAT GPT를 활용한 앱스크립트 작성이니 만큼 위 내용을 앱스크립트로 처리해보도록 하겠습니다.

하지만 실습에 앞서 일단 구글시트에서 앱스크립트를 작성하려면 아래와 같은 스프레드시트의 구조에 대한 컨셉을 알고 계셔야 합니다.

 

[스프레드시트의 구조]

스프레드시트의 구성


위 그림을 보시면 스프레드시트의 구조는 하나의 문서 안에 여러 개의 탭으로 구성되어 있고, 탭은 셀로 구성되어 있습니다. 즉, 앱스크립트로 스프레드시트를 관리하려면 "어떠한 문서의 어떤 탭에 있는 어떤 영역에 데이터를 이렇게 저렇게 해주세요" 라고 앱스크립트를 작성하시면 됩니다.

탭과 영역의 경우 상식적으로 해결이 됩니다. 각각의 탭들은 이름을 가지고 있고, 영역의 경우도 A1:B1 과 같이 일반 엑셀에서 사용하는 것 처럼 사용하시면 되니까요. 헌데 문서의 경우 구글시트가 클라우드 기반이다보니 문서명으로 활용이 되지 않습니다. 대신 URL이나 키값을 활용하게 됩니다.
키값은 아래와 같이 URL을 참조해보시면 /d/ 이후 표현되는 부분이 키값입니다.  
URL 내 /d/ 이후 주소가 스프레드시트의 키값
 
 
그렇다면 D컬럼 [고과]에 인사고과에 정보를 입력하는 기능을 실현하기 위해서 필요한 자료는 아래와 같겠군요.
 
1. 문서 : 16GMxINGN44s5XmVwqfO7wwfqq931eBr0WskKBNUFH0k
2. 탭 : 시트1
3. 실적 : C2:C6
4. 고과 : D2:D6
 
약간의 크리에이티브를 발휘하면 위 2, 3, 4는 아래와 같이 합체가 가능합니다.
1. 문서 : 16GMxINGN44s5XmVwqfO7wwfqq931eBr0WskKBNUFH0k
2. 실적 : 시트1!C2:C6
3. 고과 : 시트1!D2:D6
 
위와 같이 필요한 자료를 챙겼다면 이제 Chat GPT에서 프롬프트를 작성해봅시다.
 
 
[Chat GPT 프롬프트]
1. 변수
문서{16GMxINGN44s5XmVwqfO7wwfqq931eBr0WskKBNUFH0k},
영역{시트1!A2:D6}
 
2. 프로세스
(1) {문서}의 {영역} 중 {실적}을 참조
(2) {실적}이 100~105 사이라면 {고과}는 B로 입력
(3) {실적}이 106~110 사이라면 {고과}는 A로 입력
(4) {실적}이 110~120 사이라면 {고과}는 S로 입력
 
위 기능을 구현하는 앱스크립트를 만들어줘.

 

 

CHAT GPT 프롬프트 입력 화면
 
 
위와 같이 프롬프트를 작성하고 실행하면 아래와 같이 결과물이 생성됩니다.
 
CHAT GPT 결과물


우측 결과물을 이제 구글시트의 스크립트에 적용해 보실까요?
 

위 이미지와 같이 확장 프로그램\Apps Script를 실행해봅시다.
 

위와 같이 앱스크립트 화면이 나타나면 GPT에서 생성한 스크립트를 복사하여 그대로 위와 같이 붙여 넣고, 위 메뉴의 저장 버튼을 클릭하여 스크립트를 저장합니다.
 


저장 버튼을 클릭하면 위와 같이 실행 버튼이 활성화됩니다.
한번 클릭해보실까요?
 


갑자기 권한을 검토하라며 우리를 협박합니다.
그냥 권한 검토 누르신 뒤 지금 로그인 하신 계정 선택하시고 대충 권한 주시면 됩니다.
 
 

권한 주시고 나면 스크립트가 실행되며 아래 실행 로그에 위 이미지와 같이 실행이 잘 되었다는 로그가 생성됩니다.
그렇다면 스프레드시트의 D 컬럼은 어떻게 되었을까요? 다시 스프레드시트로 돌아가봅시다.
 

 

 
 
아 D2 셀이 빈칸으로 업데이트가 되었군요.
하지만 나머지 셀은 잘 업데이트가 된 것으로 보여집니다.
이렇게 에러가 발생하는 경우 해결 방법은 2가지 입니다.
여러분들이 생성된 스크립트를 참조하시어 직접 스크립트를 수정하시는 방법과 다시 챗지피티에 수정을 부탁하는 것이죠.
우선 스크립트를 한번 보실까요?
 
function updatePerformanceGrades() {
  var spreadsheetId = "16GMxINGN44s5XmVwqfO7wwfqq931eBr0WskKBNUFH0k"; // 문서 ID
  var sheetName = "시트1";
  var range = "A2:D6";
 
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  var data = sheet.getRange(range).getValues();
 
  for (var i = 0; i < data.length; i++) {
    var 실적 = data[i][2]; // 실적 값 (C열)
    var 고과 = "";
   
    if (실적 >= 100 && 실적 <= 105) {
      고과 = "B";
    } else if (실적 >= 106 && 실적 <= 110) {
      고과 = "A";
    } else if (실적 > 110 && 실적 <= 120) {
      고과 = "S";
    }
   
    sheet.getRange(i + 2, 4).setValue(고과); // D열(고과) 업데이트
  }
}
 
 
뭔가 영어가 써 있는데 개발 지식이 전무하신 분들께서는 for문을 이해하지 못하실 것이라 당연히 스크립트를 직접 수정하는 것은 힘들어 보입니다.
이제 남은 방법은 CHAT GPT에 수정을 부탁하는 것이죠?
위 에러를 해결하기 위해 아래와 같이 프롬프트를 작성합니다.
 
[Chat GPT 프롬프트 2]
D2 셀은 헤더이므로 업데이트에서 제외해서 다시 스크립트를 작성해줘.
 
 
우측 상단의 카피 버튼을 클릭하여 결과물을 다시 복사한 뒤 앱스크립트 화면으로 이동하여 변경된 스크립트로 변경합니다.
 
변경된 스크립트를 실행하니 원하는 바대로 결과물이 생성되는군요.

 

변경된 최종 결과물입니다.

function updatePerformanceGrades() {
  var spreadsheetId = "16GMxINGN44s5XmVwqfO7wwfqq931eBr0WskKBNUFH0k"; // 문서 ID
  var sheetName = "시트1";
  var range = "A2:D6";
 
  var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
  var data = sheet.getRange(range).getValues();
 
  for (var i = 1; i < data.length; i++) { // i = 1부터 시작하여 D2 헤더 제외
    var 실적 = data[i][2]; // 실적 값 (C열)
    var 고과 = "";
   
    if (실적 >= 100 && 실적 <= 105) {
      고과 = "B";
    } else if (실적 >= 106 && 실적 <= 110) {
      고과 = "A";
    } else if (실적 > 110 && 실적 <= 120) {
      고과 = "S";
    }
   
    sheet.getRange(i + 2, 4).setValue(고과); // D열(고과) 업데이트 (D2 제외)
  }
}
 
변경된 부분은 for (var i = 0; i < data.length; i++) 부분이 i = 1로 변경된 것이 확인되는군요...
헌데 굳이 이러한 코딩의 변경 사항을 굳이 체크하실 필요는 없어 보입니다.
중요한 부분은 여러분들이 앱스크립트를 잘 모르더라도 생성형 AI 팀원이 여러분을 충분히 서포트 해줄 수 있다는 부분입니다.
여러분들이 해주셔야 하는 부분은 자료에 대한 정의 (변수 선언) 부분과 프로세스 부분을 AI에게 잘 이야기 해주셔야 하는 것입니다.
이 부분은 앞으로 여러분들이 한번 두번 실습을 해보시면 이렇게 프롬프트를 작성하는 것이 효율적이겠구나 하는 느낌이 오실 것으로 판단됩니다.
 
오늘 포스팅은 여기까지 입니다.
감사합니다.