Z Zestmail
← 전체 글

지메일 메일 머지에서 이름이 비어 "님, 안녕하세요"로 나갈 때

구글 시트를 연결해 지메일 메일 머지(대량 발송)를 돌렸는데 받은 사람에게 "님, 안녕하세요." 또는 "안녕하세요 ,"처럼 이름이 통째로 빠진 메일이 도착했다면, 원인은 거의 항상 발송 도구가 아니라 스프레드시트 쪽에 있습니다. 셀이 비어 있거나, 공백 한 칸만 들어 있거나, 사람 이름 대신 회사명이 들어 있으면 그 내용이 그대로 템플릿에 붙어 나갑니다. 해결책은 원본 이름 열을 그대로 쓰지 않고, 셀이 비었을 때 "고객님" 같은 대체 호칭을 넣어 주는 보조 열을 만들어 그 열로 병합하는 것입니다. 수식 하나면 됩니다: =IF(TRIM(A2)="","고객님",TRIM(A2)&"님"). 아래에서 문제 행을 찾는 법, 보조 열을 만드는 법, 자주 나오는 변형(이름과 직함이 한 셀에 들어간 경우, 날짜가 숫자로 찍히는 경우, 영문 이름 대소문자 문제)을 처리하는 법, 그리고 발송 직전에 할 짧은 점검까지 순서대로 설명합니다.

지메일 메일 머지가 "님, 안녕하세요"를 보내는 이유

메일 머지는 단순한 치환 작업입니다. 도구가 시트에서 한 행을 읽고, 초안에 있는 각 자리표시자를 같은 이름의 열 값으로 바꾼 다음 발송합니다. 이름 열에 사람 이름이 들어 있어야 한다는 것도 모르고, 셀이 비었을 때 어떻게 해야 할지에 대한 판단도 없습니다. 구글 워크스페이스 Gmail에 내장된 메일 병합(다중 전송)이든, 인터넷에서 찾은 Apps Script든, 시트 부가기능이든, 구글 시트 URL로 병합하는 Zestmail 같은 크롬 확장 프로그램이든, 대부분 셀에 들어 있는 것을 그대로 넣습니다. 셀이 비어 있으면 아무것도 들어가지 않고, 뒤에 붙여 둔 "님"이나 쉼표만 덩그러니 남습니다.

빈 셀은 가장 눈에 띄는 경우일 뿐입니다. 같은 원리로 아래 문제들도 생깁니다.

  • 공백 한 칸만 들어 있는 셀은 비어 보이지만 비어 있지 않습니다. 그래서 대체 값 옵션이 있는 도구조차 작동하지 않고, "님, 안녕하세요" 앞에 공백이 하나 더 들어갑니다.
  • 이름 열에 직함이나 소속이 함께 들어간 경우("김민준 과장님님, 안녕하세요")는 CRM이나 신청 폼에서 이름 칸이 하나뿐일 때 흔히 생깁니다.
  • 영문 이름이 전부 대문자이거나 전부 소문자("SAMUEL님", "samuel님")인 경우는 휴대폰으로 급하게 입력한 명단에서 자주 보입니다.
  • 원본 시스템의 임시 값, 예를 들어 "없음", "미입력", "N/A", "-", "테스트" 같은 문자열.
  • 사람 이름 자리에 회사명이 들어간 경우. info@ 나 contact@ 같은 대표 주소를 명단에 추가하면서 이름 칸에 회사명을 적은 경우입니다.
  • 날짜와 금액이 원시 값으로 출력되는 경우. "체험 기간은 {{종료일}}에 끝납니다"가 "체험 기간은 46325에 끝납니다"로 나갑니다. 구글 시트가 날짜를 일련번호로 저장하기 때문입니다.

전부 데이터 문제이고, 데이터 문제는 데이터가 있는 곳에서 고치는 것이 가장 확실합니다. 시트를 고쳐 두면 어떤 도구를 연결하든 동일하게 올바로 동작하고, 발송 전에 실제로 무엇이 나갈지 눈으로 확인할 수 있습니다.

잘못 나갈 행을 먼저 찾기

수식을 쓰기 전에 영향을 받는 행이 몇 개인지부터 확인합니다. 구글 시트에서 빠르게 하는 방법 세 가지입니다.

  1. 빈 셀 세기. 빈 셀에 =COUNTBLANK(A2:A)를 입력합니다(A는 이름 열로 바꾸세요). 결과가 0인데도 "님, 안녕하세요"가 나갔다면 진짜 빈 셀이 아니라 공백이 들어간 셀일 가능성이 큽니다. =COUNTIF(A2:A," ")와 =COUNTIF(A2:A,"")를 추가로 확인해 보세요.
  2. 열 필터 걸기. 머리글 행을 선택하고 데이터 › 필터 만들기를 누른 뒤, 이름 열의 필터 아이콘을 클릭해 값 목록을 봅니다. 빈 셀은 맨 위에 "(빈 셀)"로 표시됩니다. 목록을 내리면서 "없음", "-", 한 글자짜리 값, 회사명 같은 항목이 있는지 훑어봅니다.
  3. 의심스러운 항목 표시하기. 새 열에 =IF(OR(TRIM(A2)="",LEN(TRIM(A2))<2,ISNUMBER(SEARCH(" ",TRIM(A2)))),"확인","")를 넣습니다. 이름이 비었거나, 한 글자이거나, 공백이 포함된 행(보통 이름과 직함, 또는 영문 이름 전체가 한 칸에 들어간 경우)에 "확인"이 찍힙니다. 이 열로 정렬한 뒤 "확인" 행만 직접 살펴보세요.

몇백 행 정도의 명단이면 수동 검토는 보통 5분이면 끝나고, 이름 칸에 "박서연 대표님"처럼 이미 호칭이 들어가 있는 것처럼 수식으로는 잡히지 않는 문제를 찾아냅니다.

구글 시트에 대체 호칭 열 만들기

원본 열을 덮어쓰지 마세요. 새 열을 추가하고 알아보기 쉬운 이름(예: 호칭)을 붙인 뒤 그 열로 병합합니다. 원본 데이터를 그대로 두면 나중에 대체 문구를 바꾸고 싶을 때 정보 손실 없이 바꿀 수 있습니다.

기본 대체 수식

새 열의 첫 데이터 행에 입력합니다.

=IF(TRIM(A2)="","고객님",TRIM(A2)&"님")

TRIM은 앞뒤 공백을 제거하므로 공백만 들어 있는 셀도 빈 셀로 취급됩니다. 결과가 비어 있으면 "고객님"을, 아니면 정리된 이름 뒤에 "님"을 붙여 돌려줍니다. 수식을 아래로 끌어 채우거나, 첫 셀에 =ARRAYFORMULA(IF(TRIM(A2:A)="","고객님",TRIM(A2:A)&"님"))를 넣어 열 전체를 한 번에 채울 수 있습니다.

"고객님"은 상대를 아는 척하지 않으면서도 어색하지 않아 가장 무난합니다. 상황에 따라 "담당자님", "회원님", "선생님"을 쓰거나, 다른 열에 회사명이 있다면 "○○ 담당자님"처럼 조합할 수도 있습니다.

인사말 전체를 수식에 넣기

이름이 없을 때 호칭 없이 "안녕하세요."만 보내고 싶다면 인사말 자체를 시트로 옮깁니다.

=IF(TRIM(A2)="","안녕하세요.",TRIM(A2)&"님, 안녕하세요.")

그러면 템플릿 첫 줄은 {{인사말}} 하나로 끝나고, 어디에도 떠도는 "님"이나 쉼표가 남지 않습니다. 템플릿이 열 내용에 대해 아무것도 가정하지 않기 때문에 가장 안전한 방식입니다.

임시 값 걸러내기

자주 나오는 쓰레기 값을 빈 셀로 취급하도록 조건을 넓힙니다.

=IF(OR(TRIM(A2)="",TRIM(A2)="없음",TRIM(A2)="미입력",LOWER(TRIM(A2))="n/a",TRIM(A2)="-"),"고객님",TRIM(A2)&"님")

사용하는 CRM이나 폼이 뱉어내는 값에 맞춰 조건을 추가하면 됩니다.

영문 이름 대소문자 정리

해외 고객이 섞인 명단이라면 PROPER()가 각 단어 첫 글자를 대문자로, 나머지를 소문자로 바꿔 "SAMUEL"을 "Samuel"로 만듭니다. 다만 "McKenzie"가 "Mckenzie"로, "DeShawn"이 "Deshawn"으로 바뀌는 부작용이 있습니다. 셀 전체가 대문자이거나 전체가 소문자일 때만 적용하는 것이 적당한 타협안입니다.

=IF(OR(EXACT(A2,UPPER(A2)),EXACT(A2,LOWER(A2))),PROPER(A2),A2)

이 수식을 대체 호칭 수식 안에 넣거나, 별도의 보조 열에 두고 참조하세요. 한글 이름에는 아무 영향이 없으므로 혼합 명단에서도 그대로 써도 됩니다.

이름과 직함, 또는 영문 성과 이름 분리

한 셀에 "김민준 과장"처럼 이름과 직함이 함께 들어 있거나, "Priya Raman"처럼 영문 성과 이름이 함께 들어 있는데 첫 단어만 쓰고 싶다면:

=IF(TRIM(B2)="","고객님",REGEXEXTRACT(TRIM(B2),"^\S+")&"님")

REGEXEXTRACT에 ^\S+를 주면 첫 번째 공백 앞까지만 돌려줍니다. 단어가 하나뿐이면 그 단어 전체가 나옵니다. 결과를 반드시 확인하세요. "Dr. Lee"처럼 호칭으로 시작하는 이름, 성이 뒤에 오는 서양식 이름과 성이 앞에 오는 한국식 이름이 섞인 명단은 수식이 어느 쪽 관례인지 알 수 없습니다. 그래서 앞 절의 수동 검토가 여전히 필요합니다.

날짜와 숫자

구글 시트는 많은 병합 도구에 화면에 보이는 형식이 아니라 내부 값을 넘깁니다. 안전하게 하려면 텍스트로 명시적으로 변환하세요.

=TEXT(D2,"yyyy년 m월 d일")      → 2026년 10월 24일
=TEXT(E2,"#,##0원")             → 1,250,000원

이렇게 만든 텍스트 열로 병합합니다. 날짜가 비어 있을 수 있다면 대체 값과 결합합니다: =IF(D2="","곧",TEXT(D2,"yyyy년 m월 d일")).

조건에 따라 문장 바꾸기

대체 값은 인사말에만 쓰는 것이 아닙니다. 어떤 행에는 회사명이 있고 어떤 행에는 없다면, 문장 전체를 시트에서 만듭니다.

=IF(TRIM(C2)="","지난주에 신청해 주셔서 감사합니다.",TRIM(C2)&"에서 지난주에 신청해 주셔서 감사합니다.")

템플릿에는 {{첫문장}}만 넣으면 모든 수신자가 자연스럽게 읽히는 문장을 받습니다. 로직이 도구 설정 어딘가에 숨지 않고 시트 한곳에 보인다는 점이 장점입니다.

발송 버튼을 누르기 전 점검 세 가지

데이터를 고치면 대부분 해결됩니다. 나머지는 이 점검으로 잡습니다.

  1. 대체 호칭 열로 정렬하기. 호칭 열 머리글을 클릭해 A→Z(가나다순)로 정렬합니다. "고객님" 행이 한데 모이니 정말 쓸 만한 이름이 없는 행인지 훑어봅니다. 이어서 Z→A로 정렬해 맨 위에 기호나 숫자로 시작하는 이름 같은 이상한 값이 없는지 봅니다. 행 순서가 중요하다면 확인 후 정렬을 되돌리세요.
  2. 한 행이 아니라 세 행을 미리보기. 대부분의 병합 도구는 첫 행만 미리 보여 주는데, 첫 행은 대개 깨끗한 행입니다. 이름이 빈 행, 이름과 직함이 함께 들어간 행, 날짜가 있는 행을 임시로 시트 맨 위로 옮겨 각각 미리보기한 뒤 원위치로 돌려놓습니다. 도구에서 미리볼 행을 고를 수 있다면 그 기능을 쓰세요.
  3. 나에게 테스트 발송하기. 시트 맨 위에 내 주소(또는 내아이디[email protected] 같은 Gmail 별칭)로 두세 행을 추가합니다. 하나는 정상 이름, 하나는 빈 이름, 하나는 날짜가 있는 행으로 만듭니다. 그 행들만 병합해 보낸 뒤 Gmail에서 열어 보고, PC뿐 아니라 휴대폰에서도 읽어 봅니다. 그다음 테스트 행을 지우고 실제 발송을 합니다.

구글 워크스페이스에 내장된 메일 병합, Apps Script, 어떤 부가기능을 쓰든 이 점검은 똑같이 적용됩니다. 일을 하는 건 시트이고, 도구는 그것을 읽을 뿐입니다.

확장 프로그램은 어디에 쓸모가 있나

Zestmail은 구글 시트 URL로 메일 머지를 할 수 있는 Gmail용 크롬 확장 프로그램이라, 위에서 만든 보조 열 방식을 그대로 쓸 수 있습니다. 호칭 열을 만들고, 시트 URL을 붙여 넣고, 초안에서 그 열을 쓰면 됩니다. 스크립트 대신 이것을 고를 이유는 주로 발송 이후에 있습니다. Zestmail은 Gmail에 수신확인(읽음 확인) 기능을 더해 각 수신자가 메일을 열었는지, 언제 열었는지 보여 주고, 내가 직접 연 것과 흔한 봇의 열람은 걸러 주기 때문에 나에게 보낸 테스트 메일이 결과를 흐리지 않습니다. 그래서 "고객님"으로 나간 행이 이름이 들어간 행보다 덜 열리는지 비교해 볼 수 있고, 이는 이름 수집에 얼마나 공을 들일지 정하는 데 참고가 됩니다. 다만 수신확인은 정확한 수치가 아닙니다. 이미지 차단이나 Apple Mail 개인정보 보호 같은 프라이버시 프록시 때문에 일부 열람은 잡히지 않으므로 숫자가 아니라 경향으로 보세요. 무료 플랜은 하루 20통까지이고 메일 하단에 작은 "Sent with Zestmail" 문구가 붙습니다. Pro 플랜은 월 9달러 또는 연 69달러이며 7일 무료 체험이 있습니다. 확장 프로그램과 웹사이트는 영어로만 제공된다는 점도 미리 알아 두세요. 가끔 메일 머지만 하고 누가 열었는지는 알 필요가 없다면, 구글이 제공하는 기능만으로 충분하고 비용도 들지 않습니다.

앞으로도 명단을 깨끗하게 유지하기

빈 이름 문제는 새 명단을 시트에 붙여 넣을 때마다 다시 생깁니다. 두 가지 습관으로 예방할 수 있습니다.

  • 입력 단계에서 이름을 필수 항목으로 만들기. 구글 설문지, 네이버 폼, 홈페이지 신청 양식으로 명단을 모은다면 이름 칸을 필수로 지정하고, 필요하면 "이름"과 "직함/소속"을 따로 받으세요. 칸이 하나뿐이면 "김민준 과장" 같은 값이 이름 열에 들어오게 됩니다.
  • 수식이 들어간 템플릿 시트 보관하기. 보조 열은 있고 데이터는 없는 병합 시트 사본을 저장해 둡니다. 새 명단이 생길 때마다 원시 행을 데이터 열에 붙여 넣으면 대체 호칭, 영문 대소문자, 날짜 수식이 자동으로 채워집니다. "확인" 열을 검토하고, 발송 전 점검 세 가지를 거친 뒤 보내면 됩니다.

원칙은 단순합니다. 메일 머지는 셀에 있는 것을 그대로 충실하게 보냅니다. 가능한 모든 경우에 대해 각 셀에 무엇이 들어가야 하는지 미리 정하고, 그 결정을 수식으로 적어 두고, 수신자보다 먼저 예외 행을 눈으로 확인하세요.