구글쉬트와 챗지피티 연동

 아래 설명은 구글 스프레드시트에서 A열(=A컬럼)의 값이 수정될 때 해당 행의 데이터를 Make(구 Integromat)를 통해 ChatGPT API로 연동·처리하는 예시 흐름입니다. 요약하자면:

  1. 구글 스크립트(onEdit) + Webhook으로 스프레드시트 변경을 Make로 실시간 알림
  2. Make 시나리오에서 해당 데이터를 받아 OpenAI(ChatGPT) API에 메시지를 전송
  3. 응답을 다시 활용(이메일, Slack, 구글 시트 갱신 등 원하는 액션)

현재 Make에서 공식 “OpenAI (ChatGPT)” 모듈이 제공되므로, HTTP 모듈 대신 OpenAI 모듈을 사용하는 방법을 예시로 설명해 드리겠습니다. (HTTP 모듈로도 가능하지만, OpenAI 연결이 조금 더 간단합니다.)


1. 구글 시트 스크립트 설정: onEdit(e) + Webhook 호출

1) Make에서 Webhook URL 발급

  1. **Make(https://www.make.com/)**에 로그인
  2. 새 시나리오(Scenario) 생성
  3. 첫 모듈(Trigger)로 Webhooks > Custom webhook 선택
  4. Add(추가) 버튼을 눌러 새 웹훅 생성 → 발급된 Webhook URL 복사
    • 예: https://hook.us1.make.com/abcd1234...

2) 구글 시트 → Apps Script 열기 및 onEdit 함수 작성

  • 구글 시트에서 도구 > 스크립트 편집기 진입 (컨테이너 바운드 스크립트)
  • 아래 샘플 코드를 붙여넣고, Webhook URL을 위에서 발급받은 것으로 교체:
function onEdit(e) {
  // A열이 수정되는지 감지 (ex: A2~A10000)
  var range = e.range;
  var newValue = e.value;

  // 편집된 시트가 맞는지(필요하다면 시트 이름도 체크)
  if (range.getSheet().getName() === 'Sheet1') {  // 시트탭 이름 맞춰주세요
    var row = range.getRow();
    var col = range.getColumn();
    
    if (col === 1 && row >= 2 && row <= 10000) {
      // A열 & 2행 이상만 감지
      // 행 전체 데이터를 가져오고 싶다면:
      var sheet = range.getSheet();
      var rowValues = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
      
      // Make Webhook URL
      var url = "https://hook.us1.make.com/abcd1234";  // 발급받은 웹훅 URL로 교체
      
      // 전송할 데이터(payload)
      // 원하는 형식대로 작성:
      var payload = {
        "editedColumnValue": newValue,  // A열 값
        "rowData": rowValues,           // 해당 행 전체 데이터 (배열)
        "row": row,
        "column": col
      };

      var options = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(payload)
      };
      
      UrlFetchApp.fetch(url, options);
    }
  }
}

3) 권한 승인

  • 처음 UrlFetchApp.fetch를 사용하는 스크립트를 실행(혹은 onEdit 발생)하면, OAuth 승인이 뜨거나 자동으로 시도됩니다.
  • 승인 팝업이 안 뜨면, 별도 테스트 함수(예: testUrlFetch())를 만들어 한 번 수동 실행하여 승인받을 수도 있습니다.

4) 셀 편집으로 테스트

  • 이제 스크립트 에디터를 닫고 시트로 돌아와, Sheet1의 A열 2행 이상 셀을 수정해봅니다.
  • “실행” 버튼으로 수동 호출하면 e가 없어 오류가 날 수 있으므로, 반드시 셀을 직접 편집해야 onEdit(e)가 트리거됩니다.

2. Make 시나리오 설정: Webhook → OpenAI(ChatGPT) → 후속 액션

  1. Scenario에 진입 → Webhook (Custom webhook) 모듈(Trigger)을 추가

    • “Listening…” 상태가 되면, 스프레드시트에서 A열 편집을 한번 해봅니다.
    • Make가 Webhook 데이터를 수신하면, 샘플 데이터가 들어온 것을 확인할 수 있습니다.
  2. 두 번째 모듈: OpenAI > Create a Completion (또는 ChatGPT 모듈)

    • Make에서 + 버튼 클릭 → 검색창에 “OpenAI”를 입력하면 관련 모듈이 뜹니다.
    • “Create a Completion” 혹은 “Chat” 모듈을 선택 (Make 버전에 따라 이름이 다를 수 있음).
    • Connection(OpenAI 계정 API Key) 연결
    • Prompt(프롬프트)에 Webhook으로 받은 정보를 넣습니다.
      • 예:
        "User data: " + {{1.rowData}} + "\n
         Based on above, please summarize in one sentence."
        
      • (Data mapping에서 Webhook의 rowData, editedColumnValue 등을 끌어다 프롬프트로 넣습니다.)
    • Model, Temperature 등 파라미터를 자유롭게 설정 (예: gpt-3.5-turbo, text-davinci-003 등)
  3. 추가 액션(선택)

    • OpenAI 응답을 슬랙(Slack)에 보내거나, 이메일 전송, 다시 구글 시트에 쓰기 등 원하는 후속 작업을 추가로 연결할 수 있습니다.
    • 예를 들어, Google Sheets > Update a row 모듈로 ChatGPT의 응답을 D열 같은 곳에 기록하도록 구성할 수도 있습니다.
  4. 시나리오 실행 / 활성화

    • 테스트로 Run once를 눌러 대기 상태
    • 다시 구글 시트에서 A열을 편집 → Webhook 데이터 확인 → OpenAI 모듈 동작 여부 확인
    • 모든 게 정상 작동하면 시나리오를 ON(활성화)으로 전환

3. 주의할 점

  1. 실시간 vs 폴링

    • 위 방식(onEdit + Webhook)은 거의 실시간으로 데이터를 Make에 보냅니다.
    • Make의 Google Sheets 모듈(Watch rows)로 폴링하는 방법도 있지만, 이 경우 5~15분 간격 지연이 있을 수 있습니다.
  2. onEdit(e) 한계

    • onEdit(e)는 **“사용자가 직접 시트를 편집”**해야만 동작합니다. 수식에 의한 값 변경, setValue(), Import, 필터 등으로 변하는 것은 트리거되지 않습니다.
    • 이럴 땐 ‘onChange’(설치형 트리거)나 Apps Script+웹훅을 다른 방식으로 구성해야 합니다.
  3. OpenAI API 요금

    • ChatGPT(API) 사용량에 따라 과금(결제 카드)될 수 있으니, 테스트 시 주의해 주세요.
  4. 보안

    • Make의 Webhook URL이 노출되면, 아무나 POST를 보낼 수 있으므로, Make 시나리오에서 추가 필터(예: “특정 키가 없으면 중단”) 등을 걸어둘 수 있습니다.
  5. 번역, 요약 등 원하는 기능

    • ChatGPT API(Completion/ChatCompletion) 프롬프트를 어떻게 구성하느냐에 따라 용도가 달라집니다.
    • 예) “이 문장을 영어로 번역해줘.”, “아래 데이터를 요약해줘.” 등.

4. 전체 흐름 요약

  1. Google Sheets에서 A열 값 편집 → Apps Script의 onEdit가 트리거
  2. onEdit 함수에서 UrlFetchApp.fetchMake Webhook에 데이터 전송
  3. **Make 시나리오(Trigger: Webhook)**가 데이터 수신 → OpenAI 모듈로 ChatGPT 호출
  4. ChatGPT 결과를 받아 Slack, Email, 다른 구글 시트, DB 등 원하는 곳으로 처리

이렇게 구성하면, 구글 시트의 특정 열에 정보를 입력하는 것만으로 ChatGPT와 자동 연동하는 워크플로우를 쉽게 만들 수 있습니다.

댓글

이 블로그의 인기 게시물

웹에서 사용자 기기 구별 방법

영상 저장 관련 기능 목록

org.xml.sax.SAXParseException 해결 방법