Google Apps Script 권한 오류 해결 Authorization required This app isn’t verified 점검 화면

Apps Script 권한 승인 오류를 실행 계정, 권한 범위, 트리거 기준으로 점검하는 흐름입니다.


오류 메시지 원문과 먼저 확인할 결론

Google Apps Script에서 Authorization required, This app isn’t verified, You do not have permission to call, Exception: You do not have permission 오류가 뜨면 먼저 권한 승인 상태, 실행 계정, 트리거 소유자, Gmail·Sheets·Drive 접근 권한을 나눠서 확인해야 합니다.


Authorization required는 스크립트가 Gmail, Google Sheets, Drive 같은 Google 서비스에 접근하기 전에 사용자의 승인이 필요하다는 뜻입니다. This app isn’t verified는 개인용 또는 테스트용 Apps Script에서 자주 보이는 OAuth 경고입니다. 본인이 만든 스크립트인지, 코드가 어떤 Google 데이터에 접근하는지 확인한 뒤 승인 여부를 결정해야 합니다.


먼저 볼 순서
  1. Apps Script 편집기에서 수동 실행이 되는지 확인합니다.
  2. 권한 승인 창에서 요청 권한 범위를 확인합니다.
  3. 트리거 자동 실행이라면 트리거를 만든 계정을 확인합니다.
  4. Gmail, Sheets, Drive 파일 접근 권한을 각각 확인합니다.
  5. 회사 계정이라면 Google Workspace 관리자 정책 제한 여부를 확인합니다.

언제 발생하는 오류인지

권한 오류는 코드가 처음 실행될 때, 새로운 Google 서비스를 코드에 추가했을 때, 트리거로 자동 실행할 때, 다른 계정의 파일이나 메일함에 접근하려고 할 때 자주 발생합니다. 예를 들어 처음에는 Google Sheets만 읽던 코드에 GmailApp을 추가하면 Gmail 접근 권한 승인이 새로 필요할 수 있습니다.


권한 오류와 코드 오류는 구분해야 합니다. 권한 오류는 승인, 계정, 파일 접근 권한, 조직 정책 문제에 가깝습니다. 반면 코드 오류는 함수명 오타, 변수 누락, 시트 이름 불일치, API 사용 방식 문제일 수 있습니다.


오류 메시지 주요 의미 먼저 확인할 것
Authorization required 스크립트 실행 전 사용자 승인 필요 편집기에서 수동 실행 후 권한 승인
This app isn’t verified OAuth 앱 검증 경고 본인이 만든 스크립트인지 확인
You do not have permission to call 해당 서비스 또는 파일 접근 권한 부족 실행 계정과 파일 공유 권한 확인
Exception: You do not have permission 특정 리소스 접근 권한 부족 문서, 스프레드시트, 드라이브 폴더 권한 확인

권한 오류의 원인 4가지

Apps Script 권한 오류는 대부분 아래 네 가지 중 하나로 좁혀집니다. 오류 메시지만 보고 바로 코드를 고치기보다, 승인 상태와 실행 계정을 먼저 확인하는 편이 빠릅니다.


스크립트 최초 실행 권한 미승인

Apps Script는 사용자의 Google 데이터에 접근하거나 사용자를 대신해 작업할 때 권한 승인을 요구합니다. 처음 실행하는 함수가 GmailApp, SpreadsheetApp, DriveApp 같은 서비스를 사용하면 승인 창이 뜰 수 있습니다.


Gmail, Sheets, Drive 권한 범위 부족

스크립트가 접근하는 서비스가 늘어나면 요청 권한도 달라집니다. SpreadsheetApp은 스프레드시트 접근 권한, GmailApp은 Gmail 접근 권한, DriveApp은 Drive 파일 접근 권한이 필요할 수 있습니다. 기존에 승인한 뒤 코드에 Gmail 기능을 추가했다면 재승인이 필요할 수 있습니다.


실행 계정과 트리거 소유자 불일치

시간 기반 트리거나 설치형 트리거는 트리거를 만든 계정의 권한으로 실행됩니다. 내가 편집기에서 수동 실행할 때는 성공해도, 다른 계정이 만든 트리거에서는 실패할 수 있습니다.


회사 Google Workspace 보안 정책 제한

회사 계정은 관리자가 외부 앱, 민감한 권한, OAuth 앱 접근을 제한할 수 있습니다. 개인 계정에서는 승인되는 스크립트가 회사 계정에서는 차단될 수 있으며, 이 경우 사용자가 직접 해결하기 어려울 수 있습니다.


Authorization required 해결 순서

Authorization required가 나오면 가장 먼저 Apps Script 편집기에서 직접 함수를 실행해 권한 승인 흐름을 시작합니다. 트리거 자동 실행만 기다리면 승인 창을 보지 못해 같은 오류가 반복될 수 있습니다.


  1. Apps Script 편집기에서 실행할 함수를 선택합니다.
  2. 상단 메뉴에서 실행을 누릅니다.
  3. 권한 검토 창이 뜨면 사용 중인 Google 계정을 선택합니다.
  4. 요청 권한 목록에서 Gmail, Sheets, Drive 접근 범위를 확인합니다.
  5. 본인이 만든 코드이고 요청 권한이 이해된다면 승인을 진행합니다.
  6. 실행 로그에서 같은 오류가 반복되는지 확인합니다.

승인 창이 뜨지 않는데도 오류가 반복되면 Google 계정의 기존 연결 권한을 끊은 뒤 다시 승인하는 방법을 검토할 수 있습니다. 이때는 Google 계정 → 보안 → 서드 파티 앱 및 서비스 연결에서 관련 앱 또는 스크립트 연결을 확인합니다.


This app isn’t verified 경고 처리법

This app isn’t verified는 앱이 Google의 OAuth 검증을 거치지 않았다는 경고입니다. 개인이 만든 Apps Script, 테스트용 스크립트, 내부 자동화 스크립트에서 볼 수 있습니다. 경고가 뜬다고 해서 모두 악성이라는 뜻은 아니지만, 승인 전 확인은 필요합니다.


승인 전 확인할 기준
  • 본인이 직접 만든 스크립트인지 확인합니다.
  • 공유받은 코드라면 작성자와 출처를 확인합니다.
  • Gmail, Drive 전체 접근처럼 민감한 권한이 있는지 확인합니다.
  • 코드에서 외부 URL로 데이터를 보내는 부분이 있는지 확인합니다.
  • 모르는 사람이 공유한 스크립트나 출처가 불분명한 스크립트는 승인하지 않습니다.

본인이 만든 테스트용 스크립트라면 고급 옵션을 통해 진행할 수 있는 경우가 있습니다. 다만 다른 사람이 보낸 스크립트, 출처를 알 수 없는 자동화 템플릿, 권한 범위가 과도한 스크립트는 실행하지 않는 편이 안전합니다.


You do not have permission 오류 점검 순서

You do not have permission 오류는 승인 창을 통과했더라도 특정 파일, 폴더, 메일함, 서비스에 접근할 권한이 없을 때 나타날 수 있습니다. 이 경우 권한 승인 자체보다 실행 계정과 대상 리소스 권한을 확인해야 합니다.


  1. 현재 Apps Script 편집기에 로그인한 계정을 확인합니다.
  2. 스크립트가 열려고 하는 Google Sheets 파일을 그 계정으로 열 수 있는지 확인합니다.
  3. Drive 파일 ID나 폴더 ID가 맞는지 확인합니다.
  4. GmailApp을 사용한다면 실행 계정의 Gmail에 접근하는 코드인지 확인합니다.
  5. 설치형 트리거라면 Apps Script 편집기 → 트리거에서 트리거 소유자를 확인합니다.
  6. 회사 계정이라면 조직 정책으로 차단된 권한인지 확인합니다.

공유받은 스프레드시트에서 컨테이너 바운드 스크립트를 실행할 때도 계정 문제가 생길 수 있습니다. 파일 편집 권한은 있어도, 스크립트가 Drive 폴더를 만들거나 Gmail을 검색하는 권한은 별도로 승인해야 할 수 있습니다.


Gmail·Sheets·Drive 권한 차이

Apps Script에서 Google 서비스를 부르는 객체가 달라지면 필요한 권한도 달라질 수 있습니다. 초보자는 “구글 계정으로 로그인했으니 모두 접근 가능하다”고 생각하기 쉽지만, Apps Script는 서비스별 권한 범위를 따로 봅니다.


서비스 예시 객체 권한 확인 포인트
Google Sheets SpreadsheetApp 스프레드시트 읽기·수정 권한
Gmail GmailApp 메일 검색, 읽기, 발송 권한
Google Drive DriveApp 파일·폴더 읽기, 생성, 수정 권한

아래 코드는 Sheets와 Gmail 권한을 동시에 요구할 수 있는 예시입니다. 테스트할 때는 본인 계정의 개인 테스트 파일에서 먼저 실행하는 편이 안전합니다.


function checkSheetAndGmailPermission() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet();
  const threads = GmailApp.search('is:unread', 0, 5);
  Logger.log(sheet.getName());
  Logger.log(threads.length);
}

트리거 자동 실행이 실패할 때 확인할 것

수동 실행은 되는데 자동 실행이 실패한다면 트리거를 확인해야 합니다. Apps Script 편집기 → 트리거에서 어떤 함수가, 어떤 이벤트로, 어떤 계정 기준으로 실행되는지 확인합니다.


시간 기반 트리거는 만든 계정의 권한으로 실행됩니다. 예를 들어 A 계정이 만든 트리거는 B 계정이 파일을 열거나 편집해도 A 계정 기준으로 실행될 수 있습니다. 이 구조 때문에 Gmail 발송자, Drive 접근 권한, Sheets 수정 권한이 예상과 다르게 작동할 수 있습니다.


자동 실행 문제를 더 깊게 확인해야 한다면 시간 기반 트리거, 실행 기록, 권한 재승인 흐름을 이어서 확인하는 것이 좋습니다.


회사 계정과 개인 계정이 섞였을 때 점검할 것

개인 Gmail 계정과 회사 Google Workspace 계정을 함께 쓰면 권한 오류가 더 자주 생깁니다. 같은 브라우저에 여러 계정이 로그인되어 있으면, 스크립트 편집기 계정과 스프레드시트 소유자 계정이 다를 수 있습니다.


  • Apps Script 편집기 오른쪽 위 계정을 확인합니다.
  • Google Sheets 파일을 연 계정과 스크립트 실행 계정이 같은지 확인합니다.
  • Drive 파일이나 폴더가 회사 계정 소유인지 확인합니다.
  • 회사 계정에서 외부 앱 접근이 차단되어 있는지 확인합니다.
  • 브라우저 프로필을 개인용과 회사용으로 분리해 테스트합니다.

회사 계정에서는 조직 관리자가 OAuth 앱 접근, 민감한 권한, 외부 앱 사용을 제한할 수 있습니다. 이 경우 사용자가 권한 창에서 승인을 눌러도 관리자 정책 때문에 차단될 수 있습니다.


권한 재승인 방법

코드를 수정했거나 기존 권한 상태가 꼬였다고 느껴지면 권한을 재승인하는 방식으로 해결할 수 있습니다. 특히 GmailApp, DriveApp, 외부 API 호출을 새로 추가한 뒤에는 재승인이 필요할 수 있습니다.


  1. Apps Script 편집기에서 문제가 되는 함수를 직접 실행합니다.
  2. 권한 승인 창이 뜨면 요청 권한 범위를 확인합니다.
  3. 승인 창이 뜨지 않으면 Google 계정 → 보안으로 이동합니다.
  4. 서드 파티 앱 및 서비스 연결에서 해당 스크립트 또는 앱 연결을 찾습니다.
  5. 연결을 삭제한 뒤 Apps Script 편집기에서 다시 실행합니다.
  6. 다시 뜨는 권한 승인 창에서 필요한 권한만 확인하고 승인합니다.

고급 사용자는 Apps Script 편집기 → 프로젝트 설정에서 manifest 파일을 확인하고 OAuth scope가 어떻게 잡혀 있는지 볼 수 있습니다. 다만 처음 해결할 때는 manifest 수정부터 시작하기보다 수동 실행, 계정 확인, 파일 권한 확인을 먼저 하는 편이 안전합니다.


보안·개인정보 주의점

Gmail과 Drive 권한은 개인 메일, 첨부파일, 문서, 폴더 정보에 접근할 수 있으므로 승인 전 스크립트 출처와 코드 내용을 확인해야 합니다. 특히 GmailApp.search, DriveApp.getFiles, UrlFetchApp.fetch 같은 코드가 함께 있으면 어떤 데이터가 외부로 전송되는지 확인해야 합니다.


승인하지 않는 편이 안전한 경우
  • 스크립트 작성자를 모르는 경우
  • 코드 내용을 확인할 수 없는 경우
  • Gmail 전체 접근이나 Drive 전체 접근을 요구하지만 목적이 불분명한 경우
  • 외부 서버로 데이터를 보내는 코드가 있는데 설명이 없는 경우
  • 회사 계정의 업무 메일과 문서에 접근하는 경우

업무용 자동화는 개인 계정보다 테스트용 계정, 별도 테스트 스프레드시트, 최소 권한 범위로 먼저 검증하는 것이 좋습니다. 회사 자료를 다루는 경우에는 관리자나 보안 담당자의 정책을 확인한 뒤 진행해야 합니다.


공식 자료로 더 확인하기

권한 오류는 Apps Script의 권한 승인 방식, OAuth scope, 트리거 실행 계정, Workspace 관리자 정책이 함께 영향을 줍니다. 아래 공식 자료에서 현재 기준을 확인할 수 있습니다.


Google Apps Script Authorization 공식 문서

Apps Script가 Google 서비스를 사용할 때 권한을 감지하고 사용자 승인을 요청하는 기본 흐름을 확인할 수 있습니다.

Apps Script Authorization 공식 문서 확인하기

Google Apps Script Installable Triggers 공식 문서

설치형 트리거가 어떤 계정 권한으로 실행되는지, 시간 기반 트리거와 이벤트 트리거를 어떻게 관리하는지 확인할 수 있습니다.

Apps Script 설치형 트리거 공식 문서 확인하기

Google Apps Script OAuth Scopes 공식 문서

SpreadsheetApp, GmailApp, DriveApp 같은 서비스가 어떤 OAuth 권한 범위와 연결되는지 확인할 수 있습니다.

Apps Script OAuth Scopes 공식 문서 확인하기

Google Workspace Admin OAuth 앱 접근 제어 문서

회사 계정에서 OAuth 앱 접근이 제한될 때 관리자가 확인해야 하는 API controls와 앱 접근 제어 기준을 볼 수 있습니다.

Google Workspace OAuth 앱 접근 제어 문서 확인하기

함께 보면 좋은 글

트리거 자동 실행이 실패할 때
권한 승인은 끝났는데 시간 기반 트리거가 실행되지 않거나 실행 기록에서 실패할 때 이어서 확인할 글입니다.
Google Apps Script 트리거 오류 해결 순서 보기

Apps Script 자동화가 처음이라면
구글시트 반복 작업을 Apps Script로 줄이는 기본 흐름과 편집기 사용법을 먼저 익힐 수 있습니다.
Google Apps Script 자동화 입문 보기

Gmail 권한을 쓰는 자동화 예시
GmailApp 권한이 왜 필요한지 실제 문의 메일 정리 자동화 흐름으로 확인할 수 있습니다.
Gmail 자동화 방법 보기

FAQ

Q1. Authorization required가 계속 뜨는 이유는 무엇인가요?

스크립트가 필요한 권한을 아직 승인받지 못했거나, 코드에 GmailApp, DriveApp 같은 새 서비스가 추가되어 추가 승인이 필요한 상태일 수 있습니다. Apps Script 편집기에서 함수를 직접 실행해 권한 승인 창을 확인하고, 기존 연결 권한을 끊은 뒤 재승인하는 방법도 함께 확인합니다.


Q2. This app isn’t verified가 뜨면 위험한가요?

경고가 뜬다고 해서 모두 위험하다는 뜻은 아닙니다. 개인이 만든 테스트용 Apps Script에서도 나타날 수 있습니다. 다만 본인이 만든 스크립트인지, 요청 권한이 무엇인지, 외부로 데이터를 보내는 코드가 있는지 확인해야 합니다. 모르는 사람이 공유한 스크립트는 승인하지 않는 편이 안전합니다.


Q3. 트리거는 수동 실행과 권한이 다른가요?

설치형 트리거는 보통 트리거를 만든 계정의 권한으로 실행됩니다. 그래서 편집기에서 직접 실행하면 성공하지만, 시간 기반 트리거에서는 실패할 수 있습니다. Apps Script 편집기 → 트리거에서 트리거 소유자, 실행 함수, 실패 기록을 확인하고 필요한 경우 트리거를 삭제한 뒤 올바른 계정으로 다시 만듭니다.


Q4. 회사 Google 계정에서 권한 승인이 안 될 때는 어떻게 해야 하나요?

회사 Google Workspace 계정은 관리자가 OAuth 앱 접근, 외부 앱, 민감한 권한을 제한할 수 있습니다. 개인이 승인 버튼을 눌러도 조직 정책 때문에 차단될 수 있으므로 관리자에게 앱 이름, 요청 권한, 사용 목적, 오류 화면을 전달해 확인을 요청하는 것이 좋습니다. 업무 데이터가 포함된 경우 임의 우회는 피해야 합니다.


Apps Script 권한 오류는 코드보다 먼저 승인 상태, 실행 계정, 트리거 소유자, Gmail·Sheets·Drive 접근 권한을 분리해서 확인하는 것이 핵심입니다.