구글앱스스크립트로 crm 문자 자동 발송 (발송 전까지의 내용)


소개

시도하고자 했던 것과 그 이유

마케터가 “경기도 사는 사람”, “기부금 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 등)


지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만