Apps Script 권한 오류 해결 방법

어제까지 잘 작동하던 Apps Script 자동화가 갑자기 ‘Authorization is required to perform that action’ 오류를 내뱉으며 멈출 때가 있습니다. 이 메시지는 스크립트가 구글 시트, Gmail, 드라이브 같은 다른 서비스에 접근하는 데 필요한 ‘허가’를 받지 못했다는 명확한 신호입니다. 코드를 아무리 수정해도 해결되지 않는 이 문제는 대부분 권한 설정에 원인이 있습니다.

바쁜 분들을 위한 3줄 요약

  • 오류 메시지를 정확히 파악하고, 매니페스트 파일(appsscript.json)의 OAuth 스코프 선언을 최우선으로 검토하세요.
  • 스크립트를 실행하는 사용자 계정과 배포 유형에 따라 권한 승인 절차를 다시 수행해야 할 수 있습니다.
  • 고급 Google 서비스 사용 시에는 스코프 추가 외에 해당 서비스 활성화 여부도 반드시 확인하십시오.

바쁜 분들을 위해 핵심 해결 순서를 먼저 요약합니다.

  • 오류 메시지를 정확히 파악하고, 매니페스트 파일(appsscript.json)의 OAuth 스코프 선언을 최우선으로 검토하세요.
  • 스크립트를 실행하는 사용자 계정과 배포 유형에 따라 권한 승인 절차를 다시 수행해야 할 수 있습니다.
  • 고급 Google 서비스(Gmail, Drive API 등) 사용 시에는 스코프 추가 외에 해당 서비스 활성화 여부도 반드시 확인해야 합니다.

Apps Script 자동화 핵심 정리

왜 Apps Script는 ‘권한 오류’를 뱉어낼까요?

How to Fix Google

Apps Script는 보안을 위해 사용자의 데이터를 마음대로 접근할 수 없습니다. 스프레드시트 수정, 메일 발송, 드라이브 파일 생성 같은 민감한 작업을 하려면, 사용자에게 “이런 작업을 실행해도 될까요?”라고 명시적으로 물어보고 허락(권한 승인)을 받아야 합니다. 이 허락의 범위를 ‘스코프(Scope)’라고 부릅니다.

예를 들어, ‘스프레드시트 읽기’ 권한만 부여받은 스크립트가 특정 셀에 값을 ‘쓰려고’ 시도하면 권한 범위를 벗어났기 때문에 오류가 발생합니다. 권한 오류의 일반적인 원인은 다음과 같습니다.

  • 필요한 스코프 누락: 스크립트 기능에 필요한 권한(스코프)이 매니페스트 파일에 선언되지 않았습니다.
  • 사용자 권한 미승인: 스크립트를 실행하는 사용자가 권한 요청 화면에서 ‘거부’를 눌렀거나 창을 닫았습니다.
  • 잘못된 계정으로 실행: 여러 구글 계정에 로그인된 상태에서, 권한을 부여한 계정이 아닌 다른 계정으로 스크립트가 실행되었습니다.
  • 배포 설정 문제: 웹 앱으로 배포 시 ‘실행 주체’나 ‘액세스 권한’ 설정이 실제 사용 환경과 맞지 않습니다.

권한 오류, 어디서부터 찾아야 할까요?

문제를 해결하는 가장 빠른 길은 오류 기록을 직접 확인하는 것입니다. 막연하게 추측하기보다 로그를 먼저 확인하세요.

  1. 실행 로그 (Execution Logs) 확인: Apps Script 편집기 왼쪽 메뉴에서 ‘실행’ (시계 모양 아이콘)을 클릭하세요. 최근 실행 기록 목록이 나타나며, ‘실패’ 상태인 항목을 클릭하면 어떤 함수, 몇 번째 줄에서 어떤 오류가 발생했는지 바로 볼 수 있습니다. ‘Authorization is required…’ 메시지가 보인다면 100% 권한 문제입니다.
  2. Cloud Logging 활용: 단순한 권한 오류가 아니거나, 웹 앱처럼 복잡한 환경에서 발생하는 문제는 ‘Google Cloud Platform(GCP)’ 프로젝트에 연결된 ‘Cloud Logging’에서 더 상세한 원인을 추적할 수 있습니다. 스크립트 편집기의 ‘프로젝트 설정’에서 GCP 프로젝트 번호를 확인할 수 있습니다.

5단계로 해결하는 Apps Script 권한 오류

오류를 확인했다면, 아래 5단계 순서에 따라 체계적으로 문제를 해결할 수 있습니다.

  1. 1단계: 오류 메시지 정확히 파악하기
    실행 로그에서 오류가 발생한 코드 라인을 확인합니다. 예를 들어 `GmailApp.sendEmail()` 함수에서 오류가 났다면 Gmail 발송 관련 권한 문제일 가능성이 매우 높습니다. 문제의 원인을 특정하는 첫 단추입니다.
  2. 2단계: 매니페스트 파일(appsscript.json) 검토
    편집기 왼쪽 ‘프로젝트 설정’ (톱니바퀴 아이콘)에서 ‘편집기에 “appsscript.json” 매니페스트 파일 표시’를 체크합니다. 편집기 파일 목록에 `appsscript.json` 파일이 나타나면 열어보세요. `oauthScopes` 목록 안에 스크립트 실행에 필요한 모든 권한이 문자열 형태로 들어있는지 확인하고, 없다면 추가합니다.

    “oauthScopes”: [
    “https://www.googleapis.com/auth/spreadsheets”,
    “https://www.googleapis.com/auth/gmail.send”,
    “https://www.googleapis.com/auth/drive.file”
    ]

  3. 3단계: 스크립트 재승인
    코드를 수정했거나 스코프를 변경했다면 권한을 다시 받아야 합니다. 편집기 상단 툴바에서 함수를 선택하고 ‘실행’ 버튼을 누르세요. 권한 승인이 필요한 경우, 팝업창이 뜨며 다시 승인 절차를 진행할 수 있습니다. 이때, 반드시 올바른 구글 계정으로 로그인했는지 확인하고 ‘허용’을 클릭해야 합니다.
  4. 4단계: 사용자 계정 및 실행 주체 확인
    스크립트를 웹 앱으로 배포했다면 ‘배포’ > ‘배포 관리’ 메뉴에서 현재 배포 버전을 클릭해 설정을 확인하세요. ‘실행 주체’가 ‘나(개발자 계정)’로 되어 있다면 스크립트는 항상 개발자 권한으로 실행됩니다. 만약 ‘웹 앱에 액세스하는 사용자’로 설정했다면, 해당 웹 앱을 사용하는 모든 팀원이 각자 처음 접속할 때 권한 승인 절차를 거쳐야 합니다.
  5. 5단계: 고급 Google 서비스 및 GCP 프로젝트 확인
    Drive API, Calendar API, Gmail API 등 ‘고급 Google 서비스’를 사용한다면 스코프 추가만으로는 부족할 수 있습니다. 먼저 편집기 왼쪽 ‘서비스’ 메뉴에서 해당 서비스를 추가했는지 확인하고, 연결된 GCP 프로젝트의 ‘API 및 서비스’ 대시보드에서 해당 API가 ‘사용 설정’ 상태인지 반드시 확인해야 합니다.

흔히 저지르는 실수와 실제 해결 사례

이론을 알아도 실제 상황에서는 실수하기 쉽습니다. 자주 발생하는 실수와 해결 사례를 통해 실패를 예방하세요.

  • 실수 1: 스코프 잘못 이해하기
    상황: 처음엔 시트 데이터 조회만 하려고 `spreadsheets.readonly` 스코프만 추가했습니다. 이후 기능을 확장해 `appendRow()` 함수로 데이터를 추가하는 코드를 넣자마자 오류가 발생했습니다.
    해결: `appsscript.json` 파일의 스코프를 읽기/쓰기가 모두 가능한 `https://www.googleapis.com/auth/spreadsheets`로 변경하고 스크립트를 다시 실행해 권한을 재승인했습니다.
  • 실수 2: 모든 사용자가 자동으로 권한을 가질 거라 착각하기
    상황: 팀원들이 사용할 업무 요청 웹 앱을 만들어 공유했습니다. 실행 주체를 ‘웹 앱에 액세스하는 사용자’로 설정했는데, 팀원들이 접속할 때마다 권한 오류가 난다며 문의가 빗발쳤습니다.
    해결: 웹 앱은 각 사용자 브라우저에서 실행되므로, 모든 사용자가 처음 접속 시 나타나는 권한 승인 화면에서 직접 ‘허용’을 클릭해야 정상 작동한다고 안내했습니다.
  • 실수 3: ‘고급 서비스’ 활성화 누락
    상황: `DriveApp` 기본 함수 대신, 더 세밀한 제어를 위해 Drive API의 `Drive.Files.insert()` 코드를 사용했습니다. 하지만 ‘Drive is not defined’ 또는 권한 관련 오류가 발생했습니다.
    해결: Apps Script 편집기 ‘서비스’ 메뉴에서 ‘Drive API’를 추가하고, 연결된 GCP 프로젝트에서 ‘Google Drive API’를 검색하여 ‘사용 설정’ 버튼을 눌러 API를 활성화했습니다.

마지막 체크리스트

권한 오류가 발생했다면, 아래 항목들을 순서대로 점검해보세요.

  • Apps Script 실행 로그에서 정확한 오류 메시지를 확인했는가?
  • 매니페스트 파일(appsscript.json)에 필요한 모든 OAuth 스코프가 올바르게 선언되었는가?
  • 스크립트를 실행하는 올바른 사용자 계정으로 권한 승인을 다시 수행했는가?
  • 웹 앱의 ‘실행 주체’ 및 ‘액세스 권한’ 설정이 의도한 대로 되어 있는가?
  • 고급 Google 서비스를 사용하는 경우, Apps Script 프로젝트와 연결된 GCP 프로젝트에서 해당 API를 활성화했는가?

Apps Script 권한 오류는 자동화 과정에서 흔히 마주치는 장벽이지만, 원인을 이해하고 체계적인 진단 절차를 따르면 충분히 극복할 수 있습니다. 오늘 다룬 내용을 바탕으로 여러분의 Apps Script 자동화 프로젝트가 더욱 안정적으로 작동하기를 바랍니다.

댓글 남기기