Apps Script의 고급 서비스를 사용하면 HTTP 인터페이스를 사용하는 것보다 적은 설정으로 특정 공개 Google API에 연결할 수 있습니다. 고급 서비스는 이러한 Google API를 래핑하는 씬 래퍼입니다. Apps Script의 기본 제공 서비스와 매우 유사하게 작동합니다. 예를 들어 자동 완성 기능을 제공하며 Apps Script에서 승인 흐름을 자동으로 처리합니다. 하지만 스크립트에서 고급 서비스를 사용하려면 먼저 고급 서비스를 사용 설정해야 합니다.
고급 서비스 사용 설정
고급 Google 서비스를 사용하려면 다음 안내를 따르세요.
1단계: 고급 서비스 사용 설정
Apps Script 편집기를 사용하거나 매니페스트를 수정하여 고급 서비스를 사용 설정할 수 있습니다.
방법 A: 편집기 사용
- Apps Script 프로젝트를 엽니다.
- 왼쪽에서 편집기 를 클릭합니다.
- 왼쪽의 서비스 옆에 있는 서비스 추가 를 클릭합니다.
- 고급 Google 서비스를 선택하고 추가를 클릭합니다.
방법 B: 매니페스트 사용
매니페스트 파일을 수정하여 고급 서비스를 사용 설정할 수 있습니다. 예를 들어 Google Drive 고급 서비스를 사용 설정하려면 dependencies 객체에 enabledAdvancedServices 필드를 추가합니다.
{
"timeZone": "America/Denver",
"dependencies": {
"enabledAdvancedServices": [
{
"userSymbol": "Drive",
"version": "v3",
"serviceId": "drive"
}
]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
고급 서비스를 사용 설정하면 자동 완성에서 사용할 수 있습니다.
2단계: Google Cloud API 사용 설정 (표준 Google Cloud 프로젝트만 해당)
기본 Google Cloud 프로젝트 (Apps Script에서 자동으로 생성됨)를 사용하는 경우 이 단계를 건너뛰어도 됩니다. 1단계에서 서비스를 추가하면 API가 자동으로 사용 설정됩니다.
표준 Google Cloud 프로젝트를 사용하는 경우 고급 서비스에 해당하는 API도 수동으로 사용 설정해야 합니다. API를 수동으로 사용 설정하려면 다음 단계를 따르세요.
**Google Cloud 콘솔**에서 스크립트와 연결된 Cloud 프로젝트를 엽니다.
콘솔 상단에서 검색창을 클릭하고 API 이름을 일부 입력한 다음 (예: 'Calendar') 이름이 표시되면 이름을 클릭합니다.
API 사용 설정을 클릭합니다.
Google Cloud 콘솔을 닫고 스크립트 편집기로 돌아갑니다.
메서드 서명이 결정되는 방식
고급 서비스는 일반적으로 해당 공개 API와 동일한 객체, 메서드 이름, 매개변수를 사용하지만 메서드 서명은 Apps Script에서 사용할 수 있도록 변환됩니다. 스크립트 편집기의 자동 완성 기능은 일반적으로 시작하는 데 충분한 정보를 제공하지만, 다음 규칙에서는 Apps Script가 공개 Google API에서 메서드 서명을 생성하는 방법을 설명합니다.
Google API에 대한 요청은 경로 매개변수, 쿼리 매개변수, 요청 본문 또는 미디어 업로드 첨부파일을 비롯한 다양한 유형의 데이터를 허용할 수 있습니다. 일부 고급 서비스는 특정 HTTP 요청 헤더(예: Calendar 고급 서비스)를 수락할 수도 있습니다.
Google Apps Script의 해당 메서드 서명에는 다음과 같은 인수가 있습니다.
- 요청 본문(일반적으로 리소스)입니다(JavaScript 객체).
- 경로 또는 필수 매개변수(개별 인수) 메서드에 여러 경로 매개변수가 필요한 경우 API 엔드포인트 URL에 나열된 순서대로 표시됩니다.
- 미디어 업로드 첨부파일(
Blob인수로 사용) - 매개변수 이름을 값에 매핑하는 JavaScript 객체로, 선택적 매개변수 (일반적으로 쿼리 매개변수)입니다.
- HTTP 요청 헤더(헤더 이름을 헤더 값에 매핑하는 JavaScript 객체)입니다.
메서드에 특정 카테고리의 항목이 없으면 서명의 해당 부분이 생략됩니다.
다음과 같은 특별한 예외사항이 있습니다.
- 미디어 업로드를 허용하는 메서드의 경우
uploadType매개변수가 자동으로 설정됩니다. - Google API에서
delete라는 메서드는 JavaScript에서delete이 예약어이므로 Apps Script에서remove로 이름이 지정됩니다. - 고급 서비스가 HTTP 요청 헤더를 수락하도록 구성되어 있고 요청 헤더 JavaScript 객체를 설정한 경우 선택적 매개변수 JavaScript 객체도 설정해야 합니다 (선택적 매개변수를 사용하지 않는 경우 빈 객체로 설정).
예: Calendar.Events.insert
Calendar event를 만들고 싶다고 가정해 보겠습니다. Google Calendar API 문서에는 해당 HTTP 요청 구조가 표시되어 있습니다.
- HTTP 동사:
POST - 요청 URL:
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events 요청 본문: Event 리소스입니다.
쿼리 매개변수:
sendUpdates,supportsAttachments등
Apps Script에서 메서드 서명은 이러한 입력을 재정렬하여 결정됩니다.
- 본문: 이벤트 리소스 (JavaScript 객체)입니다.
- 경로:
calendarId(문자열)입니다. - 선택적 매개변수: 쿼리 매개변수 (JavaScript 객체)입니다.
결과 메서드 호출은 다음과 같습니다.
const event = {
summary: 'Lunch',
location: 'Deli',
start: {
dateTime: '2026-01-01T12:00:00-05:00'
},
end: {
dateTime: '2026-01-01T13:00:00-05:00'
}
};
const calendarId = 'primary';
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, calendarId, optionalArgs);
고급 서비스 또는 HTTP?
각 고급 Google 서비스는 공개 Google API와 연결되어 있습니다. Apps Script에서는 고급 서비스를 사용하거나 UrlFetch를 사용하여 API 요청을 직접 만들어 이러한 API에 액세스할 수 있습니다.
고급 서비스 메서드를 사용하는 경우 Apps Script에서 승인 흐름을 처리하고 자동 완성 지원을 제공합니다. 하지만 이 기능을 사용하려면 먼저 고급 서비스를 사용 설정해야 합니다.
UrlFetch 메서드를 사용하여 API에 직접 액세스하는 경우 기본적으로 Google API를 외부 API로 취급합니다. 이 방법을 사용하면 API의 모든 측면을 사용할 수 있습니다. 하지만 API 승인을 처리해야 합니다.
다음 표에서는 두 가지 방법을 비교합니다.
| 기능 | 고급 서비스 | UrlFetch (HTTP) |
|---|---|---|
| 승인 | 자동으로 처리됨 | 수동 처리가 필요함 |
| 자동 완성 | 사용 가능 | 사용할 수 없음 |
| 기능 범위 | API의 하위 집합일 수 있습니다. | 모든 API 기능에 대한 전체 액세스 권한 |
| 복잡성 | 더 쉽게 | 더 복잡함 (헤더를 구성하고 응답을 파싱해야 함) |
코드 비교
코드 샘플은 고급 서비스를 사용하여 캘린더 이벤트를 만드는 것과 UrlFetchApp를 사용하여 만드는 것의 복잡성 차이를 보여줍니다.
고급 서비스:
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, 'primary', optionalArgs);
UrlFetch (HTTP):
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events?sendUpdates=all';
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
},
payload: JSON.stringify(event)
};
UrlFetchApp.fetch(url, options);
가능하면 고급 서비스를 사용하고 고급 서비스를 사용할 수 없거나 필요한 기능을 제공하지 않는 경우에만 UrlFetch 메서드를 사용하는 것이 좋습니다.
고급 서비스 지원
고급 서비스는 Google API를 래핑하는 씬 래퍼이므로 고급 서비스를 사용하는 중에 발생하는 문제는 일반적으로 Apps Script가 아닌 기본 API와 관련된 문제입니다.
고급 서비스를 사용하는 중에 문제가 발생하면 기본 API의 지원 안내에 따라 신고해야 합니다.