라이브러리는 다른 스크립트에서 함수를 재사용할 수 있는 스크립트 프로젝트입니다.
라이브러리를 사용하는 스크립트는 모든 코드가 단일 스크립트 프로젝트에 포함된 경우만큼 빠르게 실행되지 않습니다. 라이브러리를 사용하면 개발 및 유지보수가 더 편리해지지만 속도가 중요한 프로젝트에서는 라이브러리를 최대한 적게 사용하세요. 이 문제로 인해 Google Workspace 부가기능에서는 라이브러리 사용을 제한해야 합니다.
라이브러리 액세스 권한 얻기
프로젝트에 라이브러리를 포함하려면 라이브러리에 대한 보기 수준 이상의 액세스 권한이 있어야 합니다. 포함하려는 라이브러리의 작성자가 아닌 경우 작성자에게 문의하여 액세스 권한을 요청하세요.
포함하려는 라이브러리의 스크립트 ID가 필요합니다. 라이브러리에 액세스할 수 있는 경우 프로젝트 설정 페이지에서 스크립트 ID를 찾습니다.
스크립트 프로젝트에 라이브러리 추가
- Apps Script 편집기의 왼쪽에서 '라이브러리' 옆에 있는 라이브러리 추가 를 클릭합니다.
- '스크립트 ID' 필드에 라이브러리의 스크립트 ID를 붙여넣습니다.
- Look up 을 클릭합니다.
- 버전 드롭다운을 클릭하고 사용할 라이브러리 버전을 선택합니다.
- 기본 '식별자' 이름이 이 라이브러리와 함께 사용하려는 이름인지 확인합니다. 이 이름은 스크립트에서 라이브러리를 참조하는 데 사용됩니다. 예를 들어
Test로 설정한 다음 다음과 같이 라이브러리의 메서드를 호출합니다.Test.libraryMethod. - 추가 를 클릭합니다.
라이브러리 사용
포함된 라이브러리를 기본 서비스를 사용하는 것과 같은 방식으로 사용합니다. 예를 들어 Test가 라이브러리의 식별자인 경우 Test를 입력한 후 바로 마침표를 입력하여 라이브러리의 메서드 목록을 확인합니다.
다음 단계에 따라 포함된 라이브러리의 참조 문서를 엽니다.
스크립트 편집기의 왼쪽에서 라이브러리 이름 옆에 있는 더보기 > 새 탭에서 열기를 클릭합니다.
라이브러리 삭제
스크립트 편집기의 왼쪽에서 라이브러리 이름 옆에 있는 더보기 > 삭제 > 라이브러리 삭제를 클릭합니다.
작성자가 라이브러리를 삭제한 경우에도 포함된 라이브러리 목록에서 라이브러리를 삭제해야 합니다.
라이브러리 업데이트
라이브러리 버전을 변경하거나 식별자를 업데이트합니다.
- 편집기의 왼쪽 '라이브러리'에서 라이브러리 이름을 클릭합니다.
- 수정을 완료한 후 저장 을 클릭합니다.
라이브러리 만들기 및 공유
스크립트 프로젝트를 라이브러리로 사용하고 공유하려면 다음 단계를 따르세요.
- 버전이 지정된 배포 를 만듭니다.
- 라이브러리의 모든 잠재적 사용자에게 보기 수준 이상의 액세스 권한을 공유합니다.
- 이러한 사용자에게 프로젝트 설정 페이지에서 찾을 수 있는 스크립트 ID를 제공합니다.
권장사항
라이브러리를 작성할 때 따라야 할 몇 가지 가이드라인은 다음과 같습니다.
- 프로젝트에 의미 있는 이름을 선택합니다. 이 이름은 다른 사용자가 라이브러리를 포함할 때 기본 식별자로 사용되기 때문입니다.
- 스크립트의 하나 이상의 메서드를 라이브러리 사용자에게 표시되지 않도록 하거나 사용할 수 없도록 하려면 메서드 이름 끝에 밑줄을 추가합니다. 예를 들어
myPrivateMethod_입니다. - 라이브러리 사용자에게는 열거 가능한 전역 속성만 표시됩니다. 여기에는 함수 선언,
var를 사용하여 함수 외부에서 생성된 변수, 전역 객체에 명시적으로 설정된 속성이 포함됩니다. 예를 들어enumerable이false로 설정된Object.defineProperty()는 라이브러리에서 사용할 수 있는 기호를 만들지만 이 기호는 사용자가 액세스할 수 없습니다. 라이브러리 사용자가 스크립트 편집기 자동 완성 및 자동으로 생성된 문서를 사용할 수 있도록 하려면 모든 함수에 JSDoc 스타일 문서를 포함하세요. 예를 들면 다음과 같습니다.
/** * Raises a number to the given power, and returns the result. * * @param {number} base the number we're raising to a power * @param {number} exp the exponent we're raising the base to * @return {number} the result of the exponential calculation */ function power(base, exp) { ... }
리소스 범위 지정
라이브러리로 작업할 때는 공유 리소스와 비공유 리소스라는 두 가지 유형의 리소스가 있습니다. 공유 리소스는 라이브러리와 포함 스크립트 모두 리소스의 동일한 인스턴스에 대한 기본 제공 액세스 권한을 보유함을 의미합니다. 다음 다이어그램은 사용자 속성의 예를 사용하여 공유 리소스를 보여줍니다.

비공유 리소스는 라이브러리와 포함 스크립트 모두 리소스의 인스턴스에만 기본 제공 액세스 권한을 보유함을 의미합니다. 하지만 라이브러리는 리소스에서 작동하는 명시적 함수를 사용하여 비공유 리소스에 대한 액세스 권한을 제공할 수 있습니다. 다음은 스크립트 속성을 노출하기 위해 라이브러리에 포함할 함수의 예입니다.
function getLibraryProperty(key) {
const scriptProperties = PropertiesService.getScriptProperties();
return scriptProperties.getProperty(key);
}
다음 다이어그램은 스크립트 속성의 예를 사용하여 비공유 리소스를 보여줍니다.

이 표에는 참조용으로 공유 리소스와 비공유 리소스가 나와 있습니다.
| 리소스 | 공유* | 비공유** | 참고 |
|---|---|---|---|
| 잠금 | 라이브러리에서 생성된 경우 모든 포함 스크립트에 동일한 인스턴스가 표시됩니다. | ||
| 스크립트 속성 | 라이브러리에서 생성된 경우 모든 포함 스크립트에 동일한 인스턴스가 표시됩니다. | ||
| 캐시 | 라이브러리에서 생성된 경우 모든 포함 스크립트에 동일한 인스턴스가 표시됩니다. | ||
| 트리거 | 라이브러리에서 생성된 단순 트리거는 포함 스크립트에 의해 트리거되지 않습니다. | ||
| ScriptApp | |||
| UiApp |
|
||
| 사용자 속성 | |||
| 로거 및 실행 트랜스크립트 | |||
| 사이트, 시트, 기타 컨테이너 | getActive를 호출하면 포함 스크립트의 컨테이너가 반환됩니다. |
||
| MailApp 및 GmailApp | |||
|
* 즉, 라이브러리에는 기능/리소스의 자체 인스턴스가 없으며 대신 라이브러리를 호출한 스크립트에서 만든 인스턴스를 사용합니다.
** 즉, 라이브러리에는 리소스/기능의 자체 인스턴스가 있으며 라이브러리를 사용하는 모든 스크립트가 동일한 인스턴스를 공유하고 액세스할 수 있습니다. | |||
라이브러리 테스트
라이브러리를 테스트하려면 헤드 배포를 사용하세요. 스크립트에 대한 편집기 수준 액세스 권한이 있는 모든 사용자는 헤드 배포를 사용할 수 있습니다.
라이브러리의 버전이 하나 이상 저장되어 있어야 합니다.
라이브러리 디버그
라이브러리가 포함된 스크립트를 디버그할 때는 라이브러리 코드로 이동하거나 라이브러리 코드에 중단점을 설정할 수 없습니다. 디버그 모드에서 라이브러리 함수로 이동하려고 하면 디버거가 함수를 건너뛰고 호출 스크립트의 다음 줄로 이동합니다.
라이브러리 버전에 HEAD (개발 모드) 를 사용해도 라이브러리로 이동하거나 라이브러리 내에서 중단점을 적중할 수 없습니다.
라이브러리 코드를 디버그하려면 다음 방법 중 하나를 사용하세요.
- 라이브러리 프로젝트에서 디버그: Apps Script 편집기에서 라이브러리 스크립트 프로젝트를 엽니다. 특정 인수를 사용하여 라이브러리 함수를 테스트하려면 라이브러리 함수를 호출하는 임시 '테스트' 함수를 라이브러리 프로젝트 내에 만든 다음 디버그 모드에서 해당 테스트 함수를 실행합니다.
- 로깅: 라이브러리 함수 내에서
console.log()를 사용하여 정보를 실행 로그에 출력합니다. 라이브러리가 다른 스크립트에 의해 호출되면 이러한 로그가 호출 스크립트의 실행 로그에 표시됩니다.