Google Apps Script를 사용하면 Google 문서를 프로그래매틱 방식으로 만들고 수정할 수 있을 뿐만 아니라 새 메뉴, 대화상자, 사이드바로 사용자 인터페이스를 맞춤설정할 수 있습니다.
기본사항
Apps Script는 두 가지 광범위한 방법으로 Google Docs와 상호작용할 수 있습니다. 스크립트의 사용자에게 문서에 대한 적절한 권한이 있으면 모든 스크립트가 문서를 만들거나 수정할 수 있으며, 스크립트를 문서에 바인드할 수도 있습니다. 이렇게 하면 스크립트가 사용자 인터페이스를 변경하거나 문서가 열릴 때 응답할 수 있습니다. Google Docs 내에서 컨테이너 결합 스크립트를 만들려면 확장 프로그램 > Apps Script를 클릭합니다.
두 경우 모두 다음 예에서 보여주는 것처럼 Apps Script의 문서 서비스를 통해 Google 문서와 간단하게 상호작용할 수 있습니다.
function createDoc() { var doc = DocumentApp.create('Sample Document'); var body = doc.getBody(); var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']]; body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1); table = body.appendTable(rowsData); table.getRow(0).editAsText().setBold(true); }
위 스크립트는 사용자의 Google 드라이브에 새 문서를 만든 다음 문서 이름과 동일한 텍스트를 포함하는 단락을 삽입하고, 해당 단락을 제목으로 스타일을 지정하고, 2차원 배열의 값을 기반으로 테이블을 추가합니다. 스크립트는 DocumentApp.create()
호출을 DocumentApp.openById()
또는 openByUrl()
로 대체하여 기존 문서를 쉽게 변경할 수 있습니다.
문서 내에서 만들어진 스크립트 (컨테이너 바인드)의 경우 DocumentApp.getActiveDocument()
를 사용합니다.
문서 구조
Apps Script의 관점에서 Google 문서는 HTML 문서와 매우 흡사하게 구조화됩니다. 즉, Google 문서는 종종 다른 요소를 포함하는 요소 (예: Paragraph
또는 Table
)로 구성됩니다. Google 문서를 수정하는 대부분의 스크립트는 getBody()
호출로 시작합니다. Body
가 HeaderSection
, FooterSection
, Footnotes
를 제외한 다른 모든 요소를 포함하는 마스터 요소이기 때문입니다.
그러나 다른 유형을 포함할 수 있는 요소 유형에 관한 규칙도 있습니다. 또한 Apps Script의 문서 서비스는 특정 유형의 요소만 삽입할 수 있습니다. 아래 트리는 특정 유형의 요소에 포함될 수 있는 요소를 보여줍니다.
굵게 표시된 요소는 삽입할 수 있으며 굵게 표시되지 않은 요소는 해당 위치에서만 조작할 수 있습니다.
- 문서
- 본문
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- 지원되지 않는 요소 (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- 지원되지 않는 요소 (페이지 번호 등)
- 표
- ListItem
- 바닥글 섹션
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- 지원되지 않는 요소 (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- 지원되지 않는 요소 (페이지 번호 등)
- 표
- ListItem
- 각주섹션
텍스트 바꾸기
Apps Script는 Google Docs에서 텍스트를 대체하는 데 자주 사용됩니다. 고객 정보로 가득 찬 스프레드시트가 있고 각 클라이언트에 맞춤설정된 Google 문서를 생성하려 한다고 가정해 보겠습니다. 이러한 유형의 작업을 일반적으로 메일 병합이라고 합니다.
텍스트를 바꾸는 방법에는 여러 가지가 있지만 가장 간단한 방법은 아래 예에 표시된 replaceText()
메서드를 사용하는 것입니다. replaceText
는 자바스크립트의 정규 표현식 기능 대부분을 지원합니다. 아래의 첫 번째 함수는 Google 문서에 여러 줄의 자리표시자 텍스트를 추가합니다. 실제 환경에서는 자리표시자를 문서에 직접 입력할 가능성이 큽니다. 두 번째 함수는 자리표시자를 client
객체에 정의된 속성으로 바꿉니다.
두 함수 모두 Google 문서 내에서 생성된 스크립트에만 적용되는 getActiveDocument()
메서드를 사용합니다. 독립 실행형 스크립트에서는 DocumentApp.create()
, openById()
, openByUrl()
을 대신 사용합니다.
자리표시자 추가
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
자리표시자 바꾸기
function searchAndReplace() { var body = DocumentApp.getActiveDocument() .getBody(); var client = { name: 'Joe Script-Guru', address: '100 Script Rd', city: 'Scriptville', state: 'GA', zip: 94043 }; body.replaceText('{name}', client.name); body.replaceText('{address}', client.address); body.replaceText('{city}', client.city); body.replaceText('{state}', client.state); body.replaceText('{zip}', client.zip); }
맞춤 메뉴 및 사용자 인터페이스
메뉴, 대화상자, 사이드바를 추가하여 Google 문서를 맞춤설정할 수 있습니다. 그러나 스크립트는 열려 있는 문서의 현재 인스턴스, 그리고 스크립트가 문서에 결합된 경우에만 UI와 상호작용할 수 있습니다.
Google 문서에 맞춤 메뉴와 대화상자를 추가하는 방법을 알아보세요. 대화상자 또는 사이드바의 맞춤 인터페이스 만들기에 관한 자세한 내용은 HTML 서비스 가이드를 참고하세요. 부가기능의 일부로 맞춤 인터페이스를 게시하려면 스타일 가이드를 따라 Google 문서 편집기의 스타일 및 레이아웃과 일관성을 유지하세요.
Google Docs용 부가기능
부가기능은 Google 문서 내에서 실행되며 Google 문서 부가기능 스토어에서 설치할 수 있습니다. Google 문서용 스크립트를 개발했고 전 세계 사용자와 공유하려는 경우 Apps Script를 사용하면 스크립트를 부가기능으로 게시하여 다른 사용자가 부가기능 스토어에서 스크립트를 설치할 수 있습니다.
Google Docs용 부가기능을 만드는 방법을 알아보려면 Docs 부가기능 빌드 빠른 시작을 참고하세요.
트리거
Google 문서에 결합된 스크립트는 간단한 트리거를 사용하여 문서의 onOpen
이벤트에 응답할 수 있습니다. 이 이벤트는 문서에 대한 수정 권한이 있는 사용자가 Google Docs에서 문서를 열 때마다 발생합니다.
트리거를 설정하려면 onOpen()
라는 함수를 작성하면 됩니다. 이 트리거의 예는 Google Workspace의 맞춤 메뉴를 참고하세요.
간단한 트리거는 메뉴를 추가하는 데 유용하지만 승인이 필요한 Apps Script 서비스는 사용할 수 없습니다.