Z Zestmail
← 전체 글

지메일 메일머지 구글 시트: 날짜·금액 형식 깨짐 해결

지메일 메일머지로 구글 시트 데이터를 넣어 보냈는데 날짜 자리에 "46321"이 찍히거나, "1,250,000원"이어야 할 금액이 "1250000"으로 나간다면 해결 방법은 하나입니다. 셀의 원본 값을 그대로 보내지 말고 텍스트로 바꿔서 보내면 됩니다. TEXT() 함수로 값을 변환하는 보조 열을 하나 추가하고, 메일머지가 그 열을 읽게 하면 시트에서 보이는 그대로 메일에 표시됩니다. 아래에서 왜 이런 일이 생기는지, 날짜·금액·퍼센트·회원번호에는 각각 어떤 수식을 쓰면 되는지, 그리고 발송 버튼을 누르기 전에 무엇을 확인해야 하는지 설명합니다.

지메일 메일머지에서 구글 시트의 날짜와 금액이 바뀌는 이유

구글 시트에 입력된 날짜는 사실 "2026년 10월 26일"이라는 글자가 아닙니다. 내부적으로는 일련번호(1899년 12월 30일부터 센 일수)이고, 셀에 날짜 서식이 걸려 있어서 날짜처럼 보일 뿐입니다. 금액도 마찬가지입니다. "1,250,000원"은 숫자 1250000 위에 통화 서식을 씌운 것입니다.

메일머지 도구는 구글 API를 통해 시트를 읽는데, 도구에 따라 화면에 표시된 텍스트가 아니라 밑에 깔린 원본 값을 받아 가기도 합니다. 그래서 이런 결과가 나옵니다.

  • 읽을 수 있는 날짜 대신 46321
  • 1,250,000원 대신 1250000
  • 15% 대신 0.15
  • 회원번호나 송장번호 000007 대신 7
  • 일부 도구에서는 날짜가 2026-10-26T00:00:00.000Z 형태로

어떤 도구는 서식이 적용된 값을, 어떤 도구는 원본 값을 읽습니다. 테스트 메일을 열어 보기 전까지는 어느 쪽인지 알기 어렵습니다. 도구마다 동작을 외우는 대신 열 자체를 일반 텍스트로 만들어 두면 어떤 도구를 써도 결과가 같습니다.

Gmail 자체 메일머지(작성 창의 "다중 전송" 옵션)가 포함된 Google Workspace 요금제를 쓰고 있다면 연결된 시트의 열을 불러올 수 있는데, 이때도 같은 원칙이 적용됩니다. 개인용 무료 Gmail 계정에는 이 기능이 없기 때문에 대부분 구글 시트 URL을 부가기능, 크롬 확장 프로그램, 또는 간단한 Apps Script에 연결해서 사용합니다.

TEXT() 함수로 메일머지용 텍스트 열 만들기

TEXT() 함수는 값과 서식 패턴을 받아 문자열을 돌려줍니다. 결과는 더 이상 숫자나 날짜가 아니므로 어떤 도구도 다르게 해석할 수 없습니다. 정렬과 필터에 쓰는 원본 열은 그대로 두고, 그 옆에 메일머지용 열을 새로 추가하세요.

날짜

납부 기한이 C열에 있고 머리글이 "기한", 첫 데이터가 2행이라고 합시다. 새 열에 머리글 "기한_텍스트"를 쓰고 다음을 입력합니다.

=TEXT(C2,"yyyy년 M월 d일")

결과는 2026년 10월 26일입니다. 구글 시트에서 쓸 수 있는 다른 패턴은 다음과 같습니다.

  • "M월 d일 (ddd)" → 10월 26일 (월) (요일 표기는 스프레드시트 로캘을 따릅니다)
  • "yyyy-MM-dd" → 2026-10-26
  • "yyyy.MM.dd" → 2026.10.26
  • "MMM d, yyyy" → Oct 26, 2026 (해외 수신자용, 영어 로캘 기준)

월은 대문자 MM입니다. 소문자 mm은 분(minute)을 뜻하기 때문에, 날짜 수식에서 월 자리에 00이 나오는 가장 흔한 원인이 바로 이것입니다.

금액

D열에 금액이 있다면:

=TEXT(D2,"#,##0원")

결과는 1,250,000원입니다. #,##0 부분이 천 단위 쉼표를 넣고, 값이 0일 때 빈칸이 아니라 0으로 표시되게 합니다. 메일 본문에 이미 "원"이 적혀 있다면 뒤의 "원"을 빼면 됩니다.

달러 금액처럼 소수점이 필요하면 "$#,##0.00"을 쓰면 $1,250.00이 됩니다. 쉼표를 소수점으로 쓰는 유럽 로캘의 시트라면 패턴을 바꿀 필요 없이 위와 같이 적으면 됩니다. 구분 기호는 시트 로캘 설정을 따라 출력됩니다.

퍼센트

할인율이 0.15로 저장되어 있을 때:

=TEXT(E2,"0%")

결과는 15%입니다. 소수점 한 자리가 필요하면 "0.0%"를 씁니다.

앞에 0이 붙는 번호

회원번호, 주문번호, 송장번호는 구글 시트가 숫자로 인식하는 순간 앞의 0이 사라집니다. 데이터를 붙여넣기 전에 열을 일반 텍스트로 지정하거나(열 선택 → 서식 → 숫자 → 일반 텍스트), 수식으로 바꿉니다.

=TEXT(F2,"000000")

7이 000007로 바뀝니다. 휴대폰 번호도 같은 문제입니다. 010으로 시작하는 번호를 숫자로 두면 앞의 0이 날아가거나 지수 표기(1.0E+10)로 표시될 수 있으니 반드시 일반 텍스트로 저장하세요.

수식 아래로 채우기와 빈 셀 처리

채우기 핸들을 아래로 끌거나, 머리글 행에 배열 수식을 넣어 새 행이 자동으로 포함되게 합니다.

={"기한_텍스트"; ARRAYFORMULA(IF(C2:C="", "", TEXT(C2:C,"yyyy년 M월 d일")))}

IF(C2:C="", "", ...) 부분이 중요합니다. 이게 없으면 비어 있는 날짜 셀이 메일에서 1899년 12월 30일로 나가는데, 차라리 빈칸이 낫습니다. 선택 항목이라면 빈칸이어도 괜찮고, 필수 항목이라면 아래의 발송 전 점검에서 걸러집니다.

시트에서는 멀쩡한데 메일에서 깨지는 다른 열들

날짜와 금액이 가장 눈에 띄는 문제지만, 조용히 "내가 입력한 게 아닌데" 하게 만드는 것들이 몇 가지 더 있습니다.

끝에 붙은 공백과 보이지 않는 문자

CRM, 설문 폼, 다른 스프레드시트에서 붙여넣은 데이터에는 여분의 공백이나 줄바꿈이 섞여 있는 경우가 많습니다. "김민수 님," 처럼 이름과 "님" 사이가 어색하게 벌어지는 것이 대표적인 증상입니다. 다음 수식으로 정리합니다.

=TRIM(CLEAN(B2))

CLEAN은 출력되지 않는 문자를 제거하고 TRIM은 앞뒤 공백과 중복 공백을 없앱니다. 눈에 띈 열 하나만이 아니라 이름, 회사명, 주소 열 전부에 적용하세요.

이름 열에 직함이나 회사명이 섞여 있을 때

"이름" 열에 "김민수 과장"이나 "박지영 대표"처럼 직함이 함께 들어 있다면, 첫 단어만 떼어내도 호칭으로 쓰기에 충분합니다.

=INDEX(SPLIT(B2," "),1)

다만 이름 자리에 회사명("주식회사 한빛")이 들어 있거나 영문 이름이 "Lee, Minsu"처럼 성이 먼저 오는 행이 있는지 확인하세요. 열을 한 번 정렬해 보면 이상한 행이 바로 보입니다. 결과가 비어 있을 때 어떻게 할지는 별도 주제이지만, 짧게 말하면 "안녕하세요 님," 같은 메일이 나가지 않도록 항상 "고객님" 같은 기본값을 넣어 두는 것이 좋습니다.

영문 이름의 대소문자

영문 이름 열이 있다면 =PROPER(B2)가 "SARAH JONES"를 "Sarah Jones"로 바꿔 줍니다. 그런데 "McDonald"를 "Mcdonald"로, "iPhone"을 "Iphone"으로도 바꾸기 때문에, 적용한 뒤 열을 한 번 훑어보고 그대로 믿지는 마세요.

다른 시트를 참조하는 수식

보조 열이 IMPORTRANGE나 VLOOKUP으로 다른 파일을 참조한다면, 메일머지 도구가 로딩 중인 상태를 읽어서 메일에 #N/A나 Loading...이 찍힐 수 있습니다. 안전한 방법은 값을 고정하는 것입니다. 보조 열을 선택해 복사한 뒤 수정 → 특수 붙여넣기 → 값만 붙여넣기를 하세요. 데이터가 확정된 뒤, 발송 직전에 하면 됩니다.

5분이면 끝나는 발송 전 점검, 재발송을 막아줍니다

메일머지는 한 번 나가면 회수할 수 없는 메일이니 매번 같은 순서로 점검하세요.

  1. 머리글 이름과 자리표시자를 정확히 맞춥니다. 대부분의 도구는 머리글 텍스트로 열을 찾기 때문에 기한_텍스트와 기한 텍스트는 다른 열입니다. 문장부호 없이 짧게 씁니다: due_text, amount_text, name.
  2. 2행에 본인을 넣습니다. 첫 데이터 행에 본인 이메일 주소와 일부러 까다로운 값(긴 이름, 일곱 자리 금액, 월말 날짜)을 넣고 그 행에만 발송합니다. 휴대폰과 PC에서 각각 열어 보고 수신자 입장에서 읽어 보세요.
  3. 필수 열의 빈칸을 필터로 찾습니다. 머리글 행을 선택하고 데이터 → 필터 만들기, 필수 열마다 필터를 열어 "(공백)"만 체크합니다. 나오는 행은 값이나 기본값을 채워야 합니다. 끝나면 필터를 해제해서 숨겨진 행이 메일머지에서 빠지지 않게 하세요.
  4. 행 수를 확인합니다. 이메일 주소가 있는 행 수가 보내려는 메일 수와 같아야 합니다. 데이터 중간에 섞여 들어간 머리글 행이나 엉뚱한 열에 들어간 이메일이 여기서 드러납니다.
  5. 중복을 찾습니다. 이메일 열을 선택하고 데이터 → 데이터 정리 → 중복 항목 삭제. 같은 사람에게 똑같은 메일을 두 번 보내면 신뢰를 잃는 가장 빠른 길입니다.
  6. 수식 결과를 고정합니다(특수 붙여넣기 → 값만). 위에서 설명한 대로 다른 시트에 의존하는 값이 있다면 꼭 하세요.
  7. 먼저 소량으로 보냅니다. 10행만 보내고 보낸편지함을 확인한 뒤 나머지를 보냅니다. 뭔가 빠져나갔더라도 사과 메일을 300통이 아니라 10통만 쓰면 됩니다.

Zestmail 같은 도구가 도움이 되는 지점

위 내용은 직접 짠 무료 Apps Script를 포함해 어떤 메일머지 방식에서든 똑같이 통합니다. 전용 도구가 더해 주는 것은 편의성입니다. 코드를 연결하는 대신 시트 URL을 붙여넣으면 되고, Gmail 작성 창 안에서 작업이 끝납니다.

Zestmail은 Gmail용 크롬 확장 프로그램으로, 구글 시트 URL 기반 메일머지와 예약 발송, 그리고 한국에서 흔히 수신확인이라고 부르는 열람 추적 기능을 제공합니다. 수신자가 메일을 열었는지, 언제 열었는지 보여 주며 본인이 연 것과 흔한 봇 열람은 걸러냅니다. 청구서나 리마인더를 일괄 발송한 경우라면 누가 열었는지 보고 독촉 대상을 추릴 수 있고, 열람 시각을 보면 다음 발송 시간을 정하는 데 참고가 됩니다. 다만 수신확인은 완벽하지 않습니다. 이미지 차단이나 Apple Mail 개인정보 보호 같은 프라이버시 프록시 때문에 열람이 안 잡히거나 실제보다 먼저 잡힐 수 있으니, 증거가 아니라 강한 참고 신호로 보세요. Zestmail은 Gmail 받은편지함을 읽는 권한을 요청하지 않지만, 일부 기능은 작동을 위해 초안을 Zestmail 서버로 전송합니다. 확장 프로그램과 웹사이트는 영어로만 제공되므로 설치 전에 참고하세요.

무료 플랜은 하루 20통까지 보낼 수 있고, 각 메일 하단에 작은 "Sent with Zestmail" 문구가 붙습니다. Pro는 이 제한을 없애며 월 $9 또는 연 $69이고 7일 무료 체험이 있습니다. 자세한 내용은 요금 안내 페이지에 있습니다. 몇십 행짜리 일회성 발송이라면 무료 플랜으로 충분합니다. 어느 쪽이든 텍스트 열부터 먼저 만드세요. 도구는 시트가 주는 값을 그대로 보낼 뿐입니다.