Class ScriptApp

스크립트

스크립트 게시 및 트리거에 액세스하고 조작합니다. 이 클래스를 사용하면 사용자가 스크립트 트리거를 만들고 스크립트를 서비스로 게시하는 것을 제어할 수 있습니다.

속성

속성유형설명
AuthModeAuthModeApps Script가 트리거된 함수를 통해 실행할 수 있는 승인된 서비스의 카테고리를 식별하는 열거형입니다.
AuthorizationStatusAuthorizationStatus스크립트의 승인 상태를 나타내는 열거형입니다.
EventTypeEventType트리거된 이벤트 유형을 나타내는 열거형입니다.
InstallationSourceInstallationSource스크립트가 사용자에게 부가기능으로 설치된 방식을 나타내는 열거형입니다.
TriggerSourceTriggerSource트리거가 실행되는 이벤트의 소스를 나타내는 열거형입니다.
WeekDayWeekday요일을 나타내는 열거형입니다.

메서드

메서드반환 유형간략한 설명
deleteTrigger(trigger)void지정된 트리거를 삭제하여 더 이상 실행되지 않도록 합니다.
getAuthorizationInfo(authMode)AuthorizationInfo사용자가 하나 이상의 서비스를 사용하도록 이 스크립트를 승인해야 하는지 확인하고 승인 대화상자의 URL을 제공하는 데 사용되는 객체를 가져옵니다.
getIdentityToken()Stringopenid 범위가 부여된 경우 유효 사용자의 OpenID Connect ID 토큰을 가져옵니다.
getInstallationSource()InstallationSource스크립트가 현재 사용자의 부가기능으로 설치된 방법을 나타내는 enum 값을 반환합니다 (예: 사용자가 Chrome 웹 스토어를 통해 직접 설치했는지 또는 도메인 관리자가 모든 사용자를 위해 설치했는지 여부).
getOAuthToken()String유효한 사용자의 OAuth 2.0 액세스 토큰을 가져옵니다.
getProjectTriggers()Trigger[]현재 프로젝트 및 현재 사용자와 연결된 설치 가능한 모든 트리거를 가져옵니다.
getScriptId()String스크립트 프로젝트의 고유 ID를 가져옵니다.
getService()Service스크립트를 웹 앱으로 게시하는 것을 제어하는 데 사용되는 객체를 가져옵니다.
getUserTriggers(document)Trigger[]이 스크립트 또는 부가기능에 대해서만 지정된 문서에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다.
getUserTriggers(form)Trigger[]이 스크립트 또는 부가기능에 대해서만 지정된 양식에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다.
getUserTriggers(spreadsheet)Trigger[]이 스크립트 또는 부가기능에 대해서만 지정된 스프레드시트에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다.
invalidateAuth()void유효한 사용자가 현재 스크립트를 실행하는 데 필요한 승인을 무효화합니다.
newStateToken()StateTokenBuilder콜백 API (예: OAuth 흐름)에서 사용할 수 있는 상태 토큰의 빌더를 만듭니다.
newTrigger(functionName)TriggerBuilder실행 시 지정된 함수를 호출하는 설치 가능한 트리거를 만드는 프로세스를 시작합니다.

자세한 문서

deleteTrigger(trigger)

지정된 트리거를 삭제하여 더 이상 실행되지 않도록 합니다.

// Deletes all triggers in the current project.
const triggers = ScriptApp.getProjectTriggers();
for (let i = 0; i < triggers.length; i++) {
  ScriptApp.deleteTrigger(triggers[i]);
}

매개변수

이름유형설명
triggerTrigger삭제할 트리거입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

getAuthorizationInfo(authMode)

사용자가 하나 이상의 서비스를 사용하도록 이 스크립트를 승인해야 하는지 확인하고 승인 대화상자의 URL을 제공하는 데 사용되는 객체를 가져옵니다. 스크립트가 설치 가능한 트리거를 사용하는 부가기능으로 게시된 경우 이 정보를 사용하여 사용자가 필요한 승인을 받지 못한 코드 섹션에 대한 액세스를 제어할 수 있습니다. 또는 부가기능에서 사용자에게 승인 대화상자의 URL을 열어 문제를 해결하도록 요청할 수 있습니다.

var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
status = authInfo.getAuthorizationStatus();
url = authInfo.getAuthorizationUrl();

매개변수

이름유형설명
authModeAuthMode승인 정보가 요청되는 승인 모드입니다. 거의 모든 경우 authMode의 값은 ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL)여야 합니다. 다른 승인 모드에서는 사용자가 승인을 부여해야 하기 때문입니다.

리턴

AuthorizationInfo: 사용자의 승인 상태에 관한 정보를 제공할 수 있는 객체입니다.


getIdentityToken()

openid 범위가 부여된 경우 유효 사용자의 OpenID Connect ID 토큰을 가져옵니다. 이 범위는 기본적으로 포함되지 않으며 요청하려면 매니페스트 파일에 명시적 범위로 추가해야 합니다. 토큰에 추가 사용자 정보를 반환하려면 범위 https://www.googleapis.com/auth/userinfo.email 또는 https://www.googleapis.com/auth/userinfo.profile를 포함합니다.

반환된 ID 토큰은 인코딩된 JSON 웹 토큰 (JWT)이며, 이 토큰에서 정보를 추출하려면 디코딩해야 합니다. 다음 예는 토큰을 디코딩하고 실제 사용자의 Google 프로필 ID를 추출하는 방법을 보여줍니다.

const idToken = ScriptApp.getIdentityToken();
const body = idToken.split('.')[1];
const decoded = Utilities
                    .newBlob(
                        Utilities.base64Decode(body),
                        )
                    .getDataAsString();
const payload = JSON.parse(decoded);

Logger.log(`Profile ID: ${payload.sub}`);
반환된 필드 (요구사항)의 전체 목록은 OpenID Connect 문서를 참고하세요.

리턴

String: ID 토큰(있는 경우)입니다. 그렇지 않으면 null입니다.


getInstallationSource()

스크립트가 현재 사용자의 부가기능으로 설치된 방법을 나타내는 enum 값을 반환합니다 (예: 사용자가 Chrome 웹 스토어를 통해 직접 설치했는지 또는 도메인 관리자가 모든 사용자를 위해 설치했는지 여부).

리턴

InstallationSource: 설치 소스입니다.


getOAuthToken()

유효한 사용자의 OAuth 2.0 액세스 토큰을 가져옵니다. 스크립트의 OAuth 범위가 일반적으로 자체 OAuth 흐름이 필요한 다른 Google API (예: Google 선택 도구)를 승인하기에 충분한 경우 스크립트는 이 토큰을 대신 전달하여 두 번째 승인 메시지를 우회할 수 있습니다. 토큰은 일정 시간이 지나면 만료됩니다 (최소 몇 분). 스크립트는 승인 실패를 처리하고 필요한 경우 이 메서드를 호출하여 새 토큰을 가져와야 합니다.

이 메서드에서 반환하는 토큰에는 스크립트에 현재 필요한 범위만 포함됩니다. 이전에 승인되었지만 더 이상 스크립트에서 사용되지 않는 범위는 반환된 토큰에 포함되지 않습니다. 스크립트 자체에 필요한 것 외에도 추가 OAuth 범위가 필요한 경우 스크립트의 매니페스트 파일에서 지정할 수 있습니다.

리턴

String: OAuth 2.0 토큰의 문자열 표현입니다.


getProjectTriggers()

현재 프로젝트 및 현재 사용자와 연결된 설치 가능한 모든 트리거를 가져옵니다.

Logger.log(
    `Current project has ${ScriptApp.getProjectTriggers().length} triggers.`,
);

리턴

Trigger[]: 이 프로젝트와 연결된 현재 사용자의 트리거 배열입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

getScriptId()

스크립트 프로젝트의 고유 ID를 가져옵니다. getProjectKey() 대신 스크립트 프로젝트의 고유 식별자를 가져오는 데 권장되는 방법입니다. 이 ID는 이전에 프로젝트 키가 제공된 모든 위치에서 사용할 수 있습니다.

리턴

String: 스크립트 프로젝트의 ID입니다.


getService()

스크립트를 웹 앱으로 게시하는 것을 제어하는 데 사용되는 객체를 가져옵니다.

// Get the URL of the published web app.
const url = ScriptApp.getService().getUrl();

리턴

Service: 스크립트를 웹 앱으로 게시하는 것을 관찰하고 제어하는 데 사용되는 객체입니다.


getUserTriggers(document)

이 스크립트 또는 부가기능에 대해서만 지정된 문서에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다. 이 메서드는 다른 스크립트에 연결된 트리거를 확인하는 데 사용할 수 없습니다.

const doc = DocumentApp.getActiveDocument();
const triggers = ScriptApp.getUserTriggers(doc);
// Log the handler function for the first trigger in the array.
Logger.log(triggers[0].getHandlerFunction());

매개변수

이름유형설명
documentDocument설치 가능한 트리거가 포함될 수 있는 Google Docs 파일입니다.

리턴

Trigger[]: 지정된 문서에서 이 사용자가 소유한 트리거 배열입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(form)

이 스크립트 또는 부가기능에 대해서만 지정된 양식에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다. 이 메서드는 다른 스크립트에 연결된 트리거를 확인하는 데 사용할 수 없습니다.

const form = FormApp.getActiveForm();
const triggers = ScriptApp.getUserTriggers(form);
// Log the trigger source for the first trigger in the array.
Logger.log(triggers[0].getTriggerSource());

매개변수

이름유형설명
formForm설치 가능한 트리거가 포함될 수 있는 Google Forms 파일입니다.

리턴

Trigger[]: 이 사용자가 지정된 양식에서 소유한 트리거 배열입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

getUserTriggers(spreadsheet)

이 스크립트 또는 부가기능에 대해서만 지정된 스프레드시트에서 이 사용자가 소유한 설치 가능한 모든 트리거를 가져옵니다. 이 메서드는 다른 스크립트에 연결된 트리거를 확인하는 데 사용할 수 없습니다.

const ss = SpreadsheetApp.getActiveSpreadsheet();
const triggers = ScriptApp.getUserTriggers(ss);
// Log the event type for the first trigger in the array.
Logger.log(triggers[0].getEventType());

매개변수

이름유형설명
spreadsheetSpreadsheet설치 가능한 트리거가 포함될 수 있는 Google Sheets 파일입니다.

리턴

Trigger[]: 지정된 스프레드시트에서 이 사용자가 소유한 트리거 배열입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

invalidateAuth()

유효한 사용자가 현재 스크립트를 실행하는 데 필요한 승인을 무효화합니다. 현재 스크립트의 모든 권한을 무효화하는 데 사용됩니다. 이는 일회성 승인으로 태그된 함수에 특히 유용합니다. 일회성 승인 함수는 스크립트가 승인을 획득한 후 첫 실행에서만 호출할 수 있으므로 나중에 작업을 실행하려면 사용자가 승인 대화상자를 다시 볼 수 있도록 스크립트의 승인을 취소해야 합니다.

ScriptApp.invalidateAuth();

생성 값

Error: 무효화가 실패한 경우


newStateToken()

콜백 API (예: OAuth 흐름)에서 사용할 수 있는 상태 토큰의 빌더를 만듭니다.

// Generate a callback URL, given the name of a callback function. The script
// does not need to be published as a web app; the /usercallback URL suffix
// replaces /edit in any script's URL.
function getCallbackURL(callbackFunction) {
  // IMPORTANT: Replace string below with the URL from your script, minus the
  // /edit at the end.
  const scriptUrl =
      'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz';
  const urlSuffix = '/usercallback?state=';
  const stateToken = ScriptApp.newStateToken()
                         .withMethod(callbackFunction)
                         .withTimeout(120)
                         .createToken();
  return scriptUrl + urlSuffix + stateToken;
}

대부분의 OAuth2 흐름에서 state 토큰은 콜백 URL의 일부가 아닌 승인 엔드포인트에 직접 전달되며, 승인 엔드포인트는 콜백 URL의 일부로 전달합니다.

예를 들면 다음과 같습니다.

  • 스크립트가 사용자를 OAuth2 승인 URL로 리디렉션합니다. https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters
  • 사용자가 승인을 클릭하면 OAuth2 승인 페이지에서 사용자를 https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants 로 다시 리디렉션합니다.
  • 위의 리디렉션 (http://script.google.com/...로 돌아감)으로 인해 브라우저가 /usercallback에 요청을 보내고 StateTokenBuilder.withMethod(method)에 지정된 메서드를 호출합니다.

리턴

StateTokenBuilder: 상태 토큰 빌드 프로세스를 계속하는 데 사용되는 객체입니다.


newTrigger(functionName)

실행 시 지정된 함수를 호출하는 설치 가능한 트리거를 만드는 프로세스를 시작합니다.

// Creates an edit trigger for a spreadsheet identified by ID.
ScriptApp.newTrigger('myFunction')
    .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3')
    .onEdit()
    .create();

매개변수

이름유형설명
functionNameString트리거가 실행될 때 호출할 함수입니다. 포함된 라이브러리(예: Library.libFunction1)의 함수를 사용할 수 있습니다.

리턴

TriggerBuilder: 트리거 빌드 프로세스를 계속하는 데 사용되는 객체입니다.

승인

이 메서드를 사용하는 스크립트에는 다음 범위 중 하나 이상의 승인이 필요합니다.

  • https://www.googleapis.com/auth/script.scriptapp

지원 중단된 메서드