구글쉬트와 챗지피티 연동
아래 설명은 구글 스프레드시트에서 A열(=A컬럼)의 값이 수정될 때 해당 행의 데이터를 Make(구 Integromat)를 통해 ChatGPT API로 연동·처리하는 예시 흐름입니다. 요약하자면:
- 구글 스크립트(onEdit) + Webhook으로 스프레드시트 변경을 Make로 실시간 알림
- Make 시나리오에서 해당 데이터를 받아 OpenAI(ChatGPT) API에 메시지를 전송
- 응답을 다시 활용(이메일, Slack, 구글 시트 갱신 등 원하는 액션)
현재 Make에서 공식 “OpenAI (ChatGPT)” 모듈이 제공되므로, HTTP 모듈 대신 OpenAI 모듈을 사용하는 방법을 예시로 설명해 드리겠습니다. (HTTP 모듈로도 가능하지만, OpenAI 연결이 조금 더 간단합니다.)
1. 구글 시트 스크립트 설정: onEdit(e) + Webhook 호출
1) Make에서 Webhook URL 발급
- **Make(https://www.make.com/)**에 로그인
- 새 시나리오(Scenario) 생성
- 첫 모듈(Trigger)로 Webhooks > Custom webhook 선택
- 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) → 후속 액션
-
Scenario에 진입 → Webhook (Custom webhook) 모듈(Trigger)을 추가
- “Listening…” 상태가 되면, 스프레드시트에서 A열 편집을 한번 해봅니다.
- Make가 Webhook 데이터를 수신하면, 샘플 데이터가 들어온 것을 확인할 수 있습니다.
-
두 번째 모듈: OpenAI > Create a Completion (또는 ChatGPT 모듈)
- Make에서 + 버튼 클릭 → 검색창에 “OpenAI”를 입력하면 관련 모듈이 뜹니다.
- “Create a Completion” 혹은 “Chat” 모듈을 선택 (Make 버전에 따라 이름이 다를 수 있음).
- Connection(OpenAI 계정 API Key) 연결
- OpenAI 사이트(https://platform.openai.com/)에서 API Key를 발급받아 Make에 입력
- 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등)
-
추가 액션(선택)
- OpenAI 응답을 슬랙(Slack)에 보내거나, 이메일 전송, 다시 구글 시트에 쓰기 등 원하는 후속 작업을 추가로 연결할 수 있습니다.
- 예를 들어, Google Sheets > Update a row 모듈로 ChatGPT의 응답을 D열 같은 곳에 기록하도록 구성할 수도 있습니다.
-
시나리오 실행 / 활성화
- 테스트로 Run once를 눌러 대기 상태
- 다시 구글 시트에서 A열을 편집 → Webhook 데이터 확인 → OpenAI 모듈 동작 여부 확인
- 모든 게 정상 작동하면 시나리오를 ON(활성화)으로 전환
3. 주의할 점
-
실시간 vs 폴링
- 위 방식(onEdit + Webhook)은 거의 실시간으로 데이터를 Make에 보냅니다.
- Make의 Google Sheets 모듈(Watch rows)로 폴링하는 방법도 있지만, 이 경우 5~15분 간격 지연이 있을 수 있습니다.
-
onEdit(e) 한계
- onEdit(e)는 **“사용자가 직접 시트를 편집”**해야만 동작합니다. 수식에 의한 값 변경,
setValue(), Import, 필터 등으로 변하는 것은 트리거되지 않습니다. - 이럴 땐 ‘onChange’(설치형 트리거)나 Apps Script+웹훅을 다른 방식으로 구성해야 합니다.
- onEdit(e)는 **“사용자가 직접 시트를 편집”**해야만 동작합니다. 수식에 의한 값 변경,
-
OpenAI API 요금
- ChatGPT(API) 사용량에 따라 과금(결제 카드)될 수 있으니, 테스트 시 주의해 주세요.
-
보안
- Make의 Webhook URL이 노출되면, 아무나 POST를 보낼 수 있으므로, Make 시나리오에서 추가 필터(예: “특정 키가 없으면 중단”) 등을 걸어둘 수 있습니다.
-
번역, 요약 등 원하는 기능
- ChatGPT API(Completion/ChatCompletion) 프롬프트를 어떻게 구성하느냐에 따라 용도가 달라집니다.
- 예) “이 문장을 영어로 번역해줘.”, “아래 데이터를 요약해줘.” 등.
4. 전체 흐름 요약
- Google Sheets에서 A열 값 편집 → Apps Script의 onEdit가 트리거
- onEdit 함수에서 UrlFetchApp.fetch로 Make Webhook에 데이터 전송
- **Make 시나리오(Trigger: Webhook)**가 데이터 수신 → OpenAI 모듈로 ChatGPT 호출
- ChatGPT 결과를 받아 Slack, Email, 다른 구글 시트, DB 등 원하는 곳으로 처리
이렇게 구성하면, 구글 시트의 특정 열에 정보를 입력하는 것만으로 ChatGPT와 자동 연동하는 워크플로우를 쉽게 만들 수 있습니다.
댓글
댓글 쓰기