소개
시도하고자 했던 것과 그 이유
마케터가 “경기도 사는 사람”, “기부금 3천만 원 이상”처럼 자연어로 타겟만 입력하면,
AI가 자동으로 고객 DB를 필터링해주는 마케팅 자동화 시스템을 만들고자 했습니다.
개발 지식 없이도 타겟 세그먼트를 즉시 만들어낼 수 있다는 점이 흥미로웠어요.
더 나아가, 해당 타겟에 CRM을 발송하는 것이 최종 목표 였습니다.
진행 방법
어떤 도구를 사용했고, 어떻게 활용했나요?
1) Google Sheets + Apps Script
C13: 자연어 타겟 입력
C14: 고객DB 구글시트를 스마트칩(파일 칩)으로 연결
C15: 사용할 시트명
C16: Gemini 프롬프트
C17: 생성된 조건식 저장
Apps Script는
스마트칩에서 고객 DB의 스프레드시트 ID를 읽고
DB 시트 데이터를 불러와
Gemini가 만들어 준 조건식을 실행해 고객을 필터링합니다.
📌 Gemini에 사용한 핵심 프롬프트 (C16)
당신은 구글 앱스스크립트에서 사용할 고객 필터링 조건식을 만들어주는 도우미입니다.
- 자연어 예: "경기도에 사는 사람", "금액이 30000000원 이상"
- 출력 형식은 반드시 JSON 입니다.
{
"condition": "<자바스크립트 조건식 한 줄>"
}
규칙:
- item.필드명 형태 사용
- 문자열은 includes()
- 숫자는 >=, <= 활용
- 오직 자바스크립트 필터 조건식만 작성
- 설명 문구 금지
📌 핵심 코드 (요약본)
// 1) C14 스마트칩/링크에서 고객DB 스프레드시트 ID 추출
const dbSpreadsheetId = getDbSpreadsheetIdFromC14(control);
// 2) Gemini로 자연어 → 조건식 생성
let condition = generateConditionFromNaturalLanguage(natural, promptBase);
// 3) 고객DB 필터링 실행
filtered = customers.filter(item => eval(condition));
(전체 코드는 프로젝트 내에 포함되어 있음)
결과와 배운 점
배운 점
Structured Output을 쓰면 Gemini가 JSON으로만 답해서 파싱이 매우 안정적이다.
스마트칩을 사용하면 URL 붙여넣기 없이 DB 파일을 안전하게 참조할 수 있다.
자연어 → 조건식 변환은 프롬프트 설계가 가장 중요하다.
시행착오
스마트칩의 URL 구조가
/u/0/d/ID처럼 달라서 정규식 매칭 실패RichTextValue에서 실제 링크를 추출하는 과정이 복잡함
Gemini가 가끔 SQL 문법(LIKE)을 반환해 오류 발생 → 변환 코드 추가로 해결
앞으로의 계획
조건식뿐 아니라 “문자/메일 내용 자동 생성”까지 한 번에 자동화
eval() 없이 더 안전한 조건식 파서 구현
필터링 결과를 새로운 시트에 자동 정리하는 기능 추가
도움 받은 글 (옵션)
Google Sheets API — SmartChip / chipRuns 공식 문서
Gemini Structured Output API 문서
Apps Script 공식 레퍼런스 (Logger, PropertiesService, UrlFetchApp 등)