구글 스프레드시트는 강력한 데이터 분석 및 자동화 도구로, 다양한 기능을 활용하여 업무 효율을 극대화할 수 있습니다. 그런데 여기에 ChatGPT를 결합하면, 더욱 강력한 자동화 및 데이터 분석이 가능하다는 사실, 알고 계셨나요?

이번 글에서는 Google Apps Script를 활용하여 ChatGPT API를 호출하는 사용자 정의 함수(커스텀 함수) 를 만들어보겠습니다. 이를 통해 스프레드시트에서 직접 AI를 활용하여 텍스트 생성, 데이터 요약, 번역 등 다양한 작업을 수행할 수 있습니다. 간단한 코드 몇 줄만으로 생성형 AI의 강력한 기능을 스프레드시트에 접목할 수 있는 방법을 차근차근 살펴보겠습니다.

 

  • ChatGPT의 API키가 필요합니다. 사용 시 비용이 청구됩니다.

 

구글 스프레드시트란?

구글 스프레드시트(Google Sheets)는 구글이 제공하는 온라인 스프레드시트 프로그램입니다. 엑셀과 비슷하지만, 웹 브라우저에서 실행되며 자동 저장, 실시간 협업, 클라우드 저장 등의 기능을 제공합니다. 별도의 설치 없이 사용할 수 있으며, 다른 구글 서비스(Google Drive, Google Apps Script 등)와 쉽게 연동할 수 있어 데이터 관리와 자동화에 유용합니다.

 

장점

 

  • 실시간 협업 – 여러 사용자가 동시에 편집 가능하며 변경 사항이 자동 저장됨.
  • 클라우드 기반 – 인터넷만 연결되면 어디서든 접근 가능하고, 데이터가 안전하게 보관됨.
  • 확장성과 자동화 – Google Apps Script를 이용해 다양한 기능 추가 및 자동화 가능.

단점

 

  • 대용량 데이터 처리 제한 – 엑셀에 비해 행 개수(약 1,000만 개) 및 처리 속도가 제한됨.
  • 고급 기능 부족 – 일부 엑셀의 고급 기능(피벗 테이블 고급 옵션, 매크로 등)이 제한적임.
  • 인터넷 연결 필수 – 기본적으로 온라인에서 작동하며, 오프라인 기능이 제한적임.

구글 App Script란?

 

Google Apps Script(GAS) 는 구글이 제공하는 스크립트 언어로, 자바스크립트를 기반으로 합니다. 이를 사용하면 구글 워크스페이스(Google Sheets, Docs, Gmail, Drive 등)와 자동화, 연동 작업을 쉽게 수행할 수 있습니다.

예를 들어, Google 스프레드시트에서 반복 작업을 자동화하거나, 외부 API와 데이터를 주고받는 기능을 만들 수 있습니다. 코드 실행 환경이 클라우드 기반이므로 별도의 설치 없이 브라우저에서 바로 사용 가능하며, 간단한 몇 줄의 코드만으로 강력한 자동화를 구현할 수 있습니다.

 

 


 

그렇다면 스프레드시트에서 ChatGPT는 어떻게?

App Script에서 커스텀 함수를 만들 수 있습니다. 함수에서 ChatGPT API를 호출하여 기능을 사용할 수 있습니다.

 

 

1. 스프레드시트에 접속합니다.

2. 확장 프로그램 -> App Script를 선택합니다.

 

3. 스크립트에 코드를 입력해주면 완성!

 

 


 

위와 같이 매우 간단한 방법으로 커스텀 함수 만들 수 있습니다!

다만, 저는 js나 gs에 대한 지식이 없기에 ChatGPT와 함께 코드를 만들어 보았습니다.

 

아래는 완성된 코드입니다.

function CallGPT(prompt, temperature=0, model="gpt-3.5-turbo") {
  var apiKey = "OpenAI API-Key"; // OpenAI API 키 입력
  var url = "https://api.openai.com/v1/chat/completions";

  var payload = {
    model: model,
    messages: [{ role: "system", content: "당신은 텍스트에서 핵심 단어를 정확하게 분석하는 전문가입니다." },
               { role: "user", content: prompt }],
    temperature: temperature,
    max_tokens: 20
  };

  var options = {
    method: "post",
    headers: {
      "Authorization": "Bearer " + apiKey,
      "Content-Type": "application/json"
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  };

  var maxRetries = 5;  // 최대 재시도 횟수
  var delayMs = 2000;  // 2초 대기 후 재시도
  var response, responseCode;

  for (var i = 0; i < maxRetries; i++) {
    response = UrlFetchApp.fetch(url, options);
    responseCode = response.getResponseCode();

    if (responseCode !== 429) {
      break; // 429가 아니면 정상 응답 → 루프 종료
    }

    Logger.log("429 오류 발생, " + delayMs / 1000 + "초 후 재시도...");
    Utilities.sleep(delayMs); // 대기 후 다시 요청
    delayMs *= 2; // 점진적 대기 (2초 → 4초 → 8초 ...)
  }

  Logger.log("최종 HTTP 응답 코드: " + responseCode);
  var responseText = response.getContentText();
  Logger.log("API 응답 내용: " + responseText);

  if (responseCode === 429) {
    return "⚠️ 429 오류: 요청이 너무 많습니다. 잠시 후 다시 시도하세요.";
  }

  var json = JSON.parse(responseText);
  if (!json || !json.choices || json.choices.length === 0) {
    return "⚠️ OpenAI 응답 오류: 데이터를 가져올 수 없습니다.";
  }

  return json.choices[0].message.content.trim();
}

 

저는 만족도 설문에서 핵심 단어를 추출하는 함수를 만들었습니다.

사용을 위해 필요한 부분만 설명하도록 하겠습니다.

 

  • function CallGPT(prompt, temperature=0, model="gpt-3.5-turbo")
    • 함수명을 CallGPT로 지정한 것입니다. 스프레드시트에서 =CallGPT로 호출할 수 있습니다.
    • prompt는 말 그대로 지시할 문장입니다. 사용하실 때 원하시는 문구를 입력하시면 됩니다.
    • temperature는 창의성을 뜻하는 경우가 많습니다. 0에 가까울수록 딱딱한 답변을 뱉으며 1에 가까울수록 자유분방한 문장을 구사합니다. 해당 함수에선 아무런 값을 입력하지 않는다면 0으로 설정하겠다라는 기본값 설정이 되어있습니다.
    • model은 사용할 모델입니다. 아무런 입력값을 주지 않는다면 gpt-3.5-turbo를 사용하겠다는 의미입니다. 원하시는 모델명을 입력하시면 됩니다. 모델명과 가격표는 아래 사진으로 첨부합니다.

출처 : https://platform.openai.com/docs/pricing

 

 

  • var apiKey
    • OpenAI API 키를 넣어주는 곳입니다.
    • OpenAI에서 발급받은 후 입력해주세요. 발급 방법은 아래의 링크를 참고해주세요.
    • *API키는 매우 조심히 보관하셔야 합니다! 
    • OpenAI API키 발급방법

 

 

  • messages의 role : system
    • 해당 부분은 많은 경우에 역할을 지정하는데 사용됩니다. 해당 함수에선 텍스트의 핵심 단어를 분석하는 전문가로 지정하였습니다.
  • max_tokens
    • 출력값의 최대 길이입니다. 수가 클 수록 더욱 긴 답변을 출력할 수 있습니다.

 

그 외에는 에러처리에 대한 예외처리가 대부분이기에 따로 설명하지 않겠습니다.

js지식이 풍부하신 분들은 직접 수정해보셔도 너무 좋을 듯 합니다.


 

스프레드시트에서 직접 사용해보기

아래 사진과 같은 방법으로 프롬프트를 지정하시면 됩니다.

 

 

결과는 아래처럼 나왔습니다.

 

 


 

 

생각보다 사용방법이 매우 쉽죠?

해당 글에서는 매우 간단한 프롬프트를 이용하여 추출하였지만 짜임새있는 시스템 프롬프트와 쿼리를 입력해준다면 무궁무진한 가능성을 지니고 있다고 생각합니다.

여러분들도 마음껏 써보시고 후기를 들려주세요!

 

OpenAI의 API를 사용하려면 API 키가 필요합니다. 이 키를 발급받으면 ChatGPT, DALL·E, Whisper 등 OpenAI에서 제공하는 다양한 AI 모델을 사용할 수 있습니다. 아래 단계에 따라 API 키를 쉽게 발급받을 수 있습니다.


 

1. OpenAI 홈페이지 접속 (https://openai.com/)

 

2. 계정이 있다면 로그인합니다. 없으시다면 OpenAI에 가입합니다.

3. 로그인 후 https://platform.openai.com/account/api-keys 로 이동합니다.

4. 우측 상단의 + Create new secret key를 눌러 새로운 API key를 생성합니다. Name은 편한 인식명으로 입력하시면 됩니다. 기능에 영향을 주지 않습니다.

5. 생성된 API키를 저장해주세요! 잃어버리시면 다시 찾을 수 없습니다.

 

6. 이제 자유롭게 API를 이용하시면 됩니다!


API 키 보안 주의사항

  • API 키는 외부에 노출되지 않도록 주의해야 합니다.
  • 깃허브(GitHub)나 공개 저장소에 키를 업로드하지 않도록 조심하세요.
  • 키를 잃어버렸다면 새로운 키를 생성하고, 기존 키를 삭제하는 것이 좋습니다.

 

이제 OpenAI API 키 발급이 완료되었습니다! 이 키를 활용해 다양한 곳에서 OpenAI의 AI 기능을 사용할 수 있습니다.

사용하시려면 크레딧을 충전해야합니다! 충전해서 마음껏 사용해주세요!

 

 

+ Recent posts