Apps Script에 Gmail 권한 주기, 영구 삭제 문구부터 완료 확인까지
한줄 요약: Apps Script 코드에 Gmail 기능을 넣고 실행하면 권한 승인 화면에 “Gmail에서 모든 이메일 확인, 작성, 전송, 영구 삭제”라는 문구가 뜹니다. 메일을 읽기만 하는 코드를 짰는데도 그렇습니다. 이 글은 왜 이 문구가 뜨는지 공식 문서로 확인하고, 화면을 읽는 법과 막혔을 때 할 일까지 정리합니다.
코드에 Gmail 기능을 넣으면 승인 화면이 뜹니다
Apps Script는 Google 계정으로 돌아가는 프로그램입니다. 내 계정의 메일함을 건드리는 코드를 실행하려면, 그 코드가 내 계정에서 무엇을 해도 되는지 내가 먼저 허락해야 합니다. 이 허락을 받는 화면이 오늘 다룰 권한 승인 화면입니다.
아래는 실제로 작성한 코드입니다. 제목에 “계약서”가 들어간 메일을 최대 5건까지 찾아, 몇 건이 찾아졌는지만 로그로 남깁니다.
이 코드를 처음 실행하면 계정 선택과 권한 승인 화면을 거칩니다. 계정을 고르고 진행하는 클릭 순서 자체는 이 글에서 다루지 않습니다. Apps Script 첫 실행 승인 가이드에 따로 있으니 처음 실행이 낯설다면 그 글부터 봐도 됩니다. 이 글은 그 흐름 중간에 뜨는 Gmail 문구를 읽는 법에 집중합니다.
권한 화면, 클릭 전에 알아둘 것
권한 승인 화면 앞에 경고 화면이 먼저 뜰 수 있습니다.
이 화면의 문장을 그대로 옮기면 “앱에서 Google 계정의 민감한 정보에 대한 액세스를 요청합니다. 개발자의 앱이 Google에서 인증을 받기 전에는 앱을 사용하지 마세요”입니다. 조건이 **“인증 전”**이지 “이 앱은 위험하다”가 아닙니다. Google 심사를 아직 안 받은 개인 스크립트는 전부 이 화면을 거칩니다. 내가 직접 짠 코드이거나 신뢰하는 사람이 준 코드라면 왼쪽 아래 “고급”을 눌러 다음으로 넘어갈 수 있습니다.
다음으로 뜨는 화면이 이 글에서 실제로 읽어야 할 화면입니다.
Gmail 문구, 이렇게 읽습니다
Gmail 줄 옆의 “액세스 세부정보 보기” 링크를 누르면 실제로 요청되는 권한 범위 문자열을 직접 확인할 수 있습니다. 다음 절의 표와 비교해 보면, 이 화면에 뜬 문구가 어느 범위와 일치하는지 눈으로 확인됩니다. 화면 아래쪽의 “Google 계정에서 언제든지 변경할 수 있습니다”라는 문장도 그냥 지나치기 쉬운데, 이 글 뒤쪽 “막혔을 때”에서 다루는 취소 방법이 바로 이 문장이 가리키는 곳입니다.
왜 읽기만 하는 코드에 삭제 권한까지 뜨나요
Apps Script 공식 문서(인증 가이드)를 보면, 실행하는 순간 스크립트 안의 코드를 훑어 어떤 서비스를 쓰는지 자동으로 찾아냅니다. 예를 들어 SpreadsheetApp이나 GmailApp 같은 이름이 코드에 있으면 그 서비스가 쓰였다고 판단합니다. 그렇게 찾아낸 서비스에 맞춰 권한 범위를 자동으로 고릅니다.
문제는 그다음입니다. 같은 문서군의 다른 페이지(Apps Script 권한 범위 안내)는 이렇게 씁니다.
Apps Script가 필요한 것보다 더 넓은 권한을 자동으로 고르는 경우가 있어, 스크립트가 실제로 필요한 것보다 많은 접근을 사용자에게 요구할 수 있다.
GmailApp을 쓰는 순간 코드가 검색만 하든 삭제까지 하든 상관없이 GmailApp이라는 서비스 이름 자체가 넓은 권한 범위를 부릅니다. 코드의 동작이 아니라 코드가 쓴 서비스 이름으로 범위를 고르기 때문입니다.
실제로 Gmail API가 정의한 권한 범위를 나란히 두면 성격이 뚜렷이 갈립니다.
| 권한 범위 | 허용하는 것 | 이 화면 문구와 비교 |
|---|---|---|
| gmail.readonly | 메일 조회만 | 이 화면에는 뜨지 않음 |
| gmail.modify | 읽기, 작성, 전송(휴지통을 거치지 않는 즉시 삭제는 불가) | 이 화면에는 뜨지 않음 |
| mail.google.com/ | 읽기, 작성, 전송, 휴지통 없이 즉시 영구 삭제 | 이 화면에 뜬 문구와 정확히 일치 |
Google이 가장 넓은 이 범위를 설명하는 원문은 “Read, compose, send, and permanently delete all your email from Gmail”입니다. 화면의 한국어 문구 “Gmail에서 모든 이메일 확인, 작성, 전송, 영구 삭제”는 이 문장을 그대로 옮긴 것입니다. GmailApp.search()처럼 조회만 하는 코드를 실행했는데도 가장 넓은 이 범위가 뜬 이유가 여기 있습니다.
좁힐 수 있나요
공식 문서에는 방법이 있습니다. 프로젝트의 매니페스트 파일(appsscript.json)에 원하는 권한 범위만 직접 지정하면 자동으로 고른 넓은 범위 대신 좁은 범위만 요청하도록 바꿀 수 있습니다. 다만 이 작업은 코드를 직접 여는 사람의 몫입니다. 화면에서 클릭만 하는 사람에게는 좁히는 선택지가 없습니다.
그래서 이 글의 독자에게 필요한 판단은 좁히는 방법이 아니라 다른 데 있습니다. 이 스크립트를 누가 썼는가입니다.
내가 직접 쓴 코드
- 아는 것 GmailApp으로 무엇을 하는지 검색만 했는지, 삭제 코드가 있는지 내가 알고 있습니다
- 화면을 보면 이미 아는 권한을 확인만 하면 됩니다 뜬 문구가 왜 뜨는지 설명할 수 있습니다
계속을 눌러도 근거가 있습니다
남이 준 코드
- 아는 것 화면에 뜨는 권한 문구뿐 코드 안을 보지 않았다면 실제로 무엇을 하는지 모릅니다
- 화면을 보면 코드부터 열어봐야 합니다 GmailApp이 쓰였는지, 어디까지 쓰는지 먼저 확인합니다
코드를 못 봤다면 계속을 누르지 않습니다
막혔을 때
| 증상 | 원인 | 할 일 |
|---|---|---|
| 계정을 고르자마자 앱 액세스가 막혔다는 안내가 뜨고 더 진행이 안 된다 | 회사, 학교 Google Workspace 관리자가 이 앱의 접근을 차단으로 설정 | 관리자에게 문의하거나, 관리자 통제를 받지 않는 개인 Gmail 계정으로 다시 시도 |
| 무심코 계속을 눌러 권한을 줬는데 취소하고 싶다 | 이미 권한이 부여된 상태 | Google 계정의 보안 섹션에서 이 앱의 액세스를 해제 |
| Google에서 확인하지 않은 앱 경고가 무서워서 못 넘어간다 | 개인이 만든 스크립트는 아직 Google 인증(심사)을 받지 않은 것이 정상 | 개발자가 나 자신이거나 신뢰하는 사람이면 진행하고, 모르는 사람이 준 것이면 진행하지 않는다 |
회사나 학교 계정에서는 관리자가 앱 접근 수준을 미리 정해 둘 수 있습니다. Google Workspace 관리자 문서에 따르면 앱은 신뢰함, 제한된 서비스만 허용, 지정된 범위만 허용, 차단 네 단계 중 하나로 분류됩니다. 차단으로 설정돼 있으면 사용자에게는 앱이 차단됐다는 안내가 뜨고, 관리자가 별도 문구를 지정하지 않았다면 기본 안내만 뜹니다. 이 경우 개인 사용자가 화면에서 풀 방법은 없고 관리자에게 요청하는 것이 유일한 경로입니다.
잘못 눌렀거나 더는 쓰지 않는 스크립트의 권한을 지우려면, 공식 문서가 안내하는 대로 Google 계정의 보안 섹션에서 그 앱의 액세스를 철회하면 됩니다. 권한 화면 아래쪽의 “Google 계정에서 언제든지 변경할 수 있습니다”라는 문장이 가리키는 곳이 바로 여기입니다. 철회한 뒤 같은 스크립트를 다시 실행하면 승인 화면부터 다시 거칩니다.
완료 판정, 로그에 숫자가 찍히면 됩니다
승인 화면에서 계속을 누르면 코드가 실제로 실행됩니다. 제대로 동작했는지는 추측하지 않고 실행 로그로 확인합니다.
코드는 조건에 맞는 메일을 최대 5건까지 찾아 그 개수를 로그로 남기도록 되어 있었습니다. 로그에 5.0이 찍혔다는 것은 조건에 맞는 메일이 있었고 그중 5건을 찾았다는 뜻입니다. 숫자가 찍히면 권한도, 코드도 제대로 동작한 것입니다.
권한을 준 다음 조심할 것
권한은 지금 실행한 코드 한 줄이 아니라 그 스크립트가 쓰는 서비스 전체에 걸립니다. GmailApp으로 검색 코드 한 줄만 실행했어도, 승인한 범위가 가장 넓은 범위라면 그 스크립트는 이후 어느 시점에든 메일을 읽고 쓰고 보내고 영구 삭제할 수 있는 상태가 됩니다. 지금 실행한 코드가 검색뿐이라는 사실이 앞으로도 검색만 한다는 보장은 아닙니다.
이 위험은 남이 준 스크립트에 Gmail 권한을 줄 때 특히 커집니다. 내가 검토하지 않은 코드가 내 계정에서 이메일을 영구 삭제할 수 있는 상태로 남아 있게 됩니다.
이 글의 화면은 2026년 8월 25일에 확인했습니다. 인용한 Apps Script 인증 가이드, Gmail API 권한 범위, Google Workspace 관리자 문서도 같은 날 확인했습니다. Google은 화면 구성과 문구를 바꿀 수 있으니, 실제 화면이 다르면 권한 화면에 적힌 문장을 기준으로 판단하세요.
댓글