Google 서비스 승인

Apps Script는 내장 Google 서비스 또는 고급 Google 서비스의 비공개 데이터에 액세스하려면 사용자 승인이 필요합니다.

Google 서비스 승인 작동 방식

스크립트에서 Google 서비스에 대한 액세스가 필요한 경우 다음과 같은 일반적인 프로세스를 따릅니다.

  1. 감지: Apps Script가 스크립트를 검사하여 사용하는 서비스를 식별합니다 (예: SpreadsheetApp 또는 GmailApp).
  2. 범위 결정: 스캔을 기반으로 Apps Script는 스크립트 실행에 필요한 OAuth 범위 세트를 식별합니다.
  3. 승인 확인: 스크립트가 실행되면 사용자가 이미 해당 범위를 승인했는지 확인합니다.
  4. 사용자 메시지: 승인이 누락된 경우 사용자에게 권한을 부여하라는 대화상자가 표시됩니다.
  5. 실행: 스크립트가 승인되면 해당 사용자의 요청된 데이터에 액세스할 수 있습니다.

권한 및 스크립트 유형

스크립트가 실행되는 사용자 ID(따라서 액세스할 수 있는 데이터)는 다음 표와 같이 스크립트가 실행되는 시나리오에 따라 다릅니다.

스크립트 유형 스크립트가 다음과 같이 실행됩니다.
독립형, 부가기능 또는 Docs, Sheets, Slides, Forms에 결합됨 키보드를 사용하는 사용자
스프레드시트의 맞춤 함수 익명 사용자; 하지만 할당량 한도는 키보드에 있는 사용자를 기준으로 계산됩니다.
웹 앱 또는 Google Sites 가젯 앱을 배포할 때 선택한 옵션에 따라 키보드 사용자 또는 스크립트 소유자
설치 가능한 트리거 트리거를 만든 사용자

액세스 권한 부여

Apps Script는 코드 검사를 기반으로 승인 범위 (예: Google Sheets 파일 또는 Gmail 액세스)를 자동으로 결정합니다. 주석 처리된 코드도 승인 요청을 생성할 수 있습니다. 스크립트에 승인이 필요한 경우 스크립트를 실행하면 여기에 표시된 승인 대화상자 중 하나가 표시됩니다.

이전에 승인한 스크립트도 코드 변경으로 새 서비스가 추가되면 추가 승인을 요청합니다. 스크립트 소유자의 사용자 ID로 실행되는 웹 앱으로 스크립트에 액세스하는 경우 스크립트에서 승인을 요청하지 않을 수 있습니다.

액세스 권한 취소

스크립트의 데이터 액세스 권한을 취소하려면 다음 단계를 따르세요.

  1. Google 계정의 권한 페이지를 방문합니다. (나중에 이 페이지로 이동하려면 Google.com을 방문한 다음 화면 오른쪽 상단에 있는 계정 사진을 클릭하세요. 그런 다음 내 계정을 클릭하고 '로그인 및 보안' 섹션에서 연결된 앱 및 사이트를 클릭한 다음 앱 관리를 클릭합니다.)
  2. 권한을 취소할 스크립트의 이름을 클릭한 다음 오른쪽의 삭제를 클릭하고 결과 대화상자에서 확인을 클릭합니다.

범위를 현재 문서로 제한

스프레드시트 서비스, 문서 서비스, 슬라이드 서비스 또는 양식 서비스를 사용하는 애드온 또는 기타 스크립트를 빌드하는 경우 승인 대화상자에서 사용자의 모든 스프레드시트, 문서 또는 양식이 아닌 애드온 또는 스크립트가 사용되는 파일에 대한 액세스 권한만 요청하도록 강제할 수 있습니다. 이렇게 하려면 파일 수준 주석에 다음 JsDoc 주석을 포함하세요.

/**
 * @OnlyCurrentDoc
 */

스크립트에 @OnlyCurrentDoc를 선언하는 라이브러리가 포함되어 있지만 기본 스크립트에서 실제로 현재 파일보다 더 많은 액세스가 필요한 경우 반대 주석 @NotOnlyCurrentDoc를 사용할 수 있습니다.

부가기능의 승인 수명 주기

Google Sheets, Docs, Slides, Forms의 부가기능은 일반적으로 문서에 바인딩된 스크립트와 동일한 승인 모델을 따릅니다. 하지만 특정 상황에서는 onOpen(e)onEdit(e) 함수가 승인 없음 모드로 실행되어 몇 가지 추가적인 문제가 발생합니다. 자세한 내용은 부가기능 승인 수명 주기 가이드를 참고하세요.

OAuth 애플리케이션 사용자 한도

OAuth를 사용하여 Google 사용자 데이터에 액세스하는 애플리케이션(Apps Script 프로젝트 포함)에는 승인 한도가 적용됩니다. 자세한 내용은 OAuth 애플리케이션 사용자 한도를 참고하세요.

Apps Script를 사용한 재인증 동작

Apps Script는 Google Cloud 서비스 설정에서 구성한 재인증 빈도를 적용하지 않습니다. 이는 Apps Script가 직접적인 사용자 상호작용 없이 작동하는 트리거를 사용하여 자동으로 실행될 수 있기 때문입니다. 이러한 자동 실행은 재인증 프롬프트를 트리거하지 않습니다. Apps Script 애플리케이션은 지정한 시간(예: 12시간)이 지난 후 자동으로 재인증을 요청하지 않습니다.

매니페스트에서 명시적 범위 설정

Apps Script는 함수 호출을 위해 코드를 스캔하여 필요한 범위를 자동으로 결정합니다. 더 많은 제어가 필요한 경우 프로젝트 매니페스트 (appsscript.json)에서 범위를 명시적으로 설정할 수 있습니다. 게시된 스크립트의 경우 필요한 최소 권한을 사용하도록 하는 것이 좋습니다.

자세한 내용은 명시적 범위 설정을 참고하세요.

문제 해결

  • 트리거를 실행할 때 '승인 필요' 오류 발생: 트리거는 트리거를 만든 사용자가 승인해야 합니다. 새 권한이 필요한 코드를 추가하는 경우 스크립트 편집기에서 함수를 한 번 수동으로 실행하여 승인 대화상자를 트리거해야 합니다.
  • 범위가 업데이트되지 않음: 코드를 업데이트했지만 승인 대화상자에 변경사항이 반영되지 않는 경우 프로젝트를 저장하고 편집기를 새로고침해 보세요. 매니페스트에서 명시적 범위를 사용하는 경우 oauthScopes 배열에 새 범위를 추가했는지 확인하세요.
  • '이 앱이 차단됨' 또는 확인되지 않은 앱 경고: 스크립트에서 민감하거나 제한된 범위를 사용하고 Google에서 확인하지 않은 경우에 발생합니다. OAuth 클라이언트 확인을 참고하세요.