Google Apps Script를 사용하면 프로그래매틱 방식으로 Google Docs를 만들고 수정할 수 있으며, 새 메뉴, 대화상자, 사이드바를 사용하여 사용자 인터페이스를 맞춤설정할 수 있습니다.
기본 사항
Apps Script는 두 가지 기본적인 방식으로 Google Docs와 상호작용할 수 있습니다. 스크립트의 사용자가 문서에 대한 적절한 권한을 보유한 경우 모든 스크립트가 문서를 만들거나 수정할 수 있으며, 스크립트를 문서에 바인딩할 수도 있습니다. 이렇게 하면 스크립트가 사용자 인터페이스를 변경하거나 문서가 열릴 때 응답하는 특별한 기능을 갖게 됩니다. Google Docs 내에서 컨테이너 결합 스크립트를 만들려면 확장 프로그램 > Apps Script를 클릭합니다.
두 경우 모두 다음 예와 같이 Apps Script의 문서 서비스를 통해 Google Docs 문서와 간단하게 상호작용할 수 있습니다.
function createDoc() { var doc = DocumentApp.create('Sample Document'); var documentTab = doc.getTab('t.0').asDocumentTab(); var body = documentTab.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 Drive에 새 문서를 만든 다음 ID가 t.0
인 탭 (기본 첫 번째 탭)을 가져와 문서 이름과 동일한 텍스트가 포함된 단락을 삽입하고, 해당 단락의 스타일을 제목으로 지정하고, 2차원 배열의 값을 기반으로 테이블을 추가합니다. 스크립트는 DocumentApp.create()
호출을 DocumentApp.openById()
또는 openByUrl()
로 대체하여 기존 문서에 이러한 변경사항을 쉽게 적용할 수 있습니다.
문서 내에서 만들어진 (컨테이너에 결합) 스크립트의 경우 DocumentApp.getActiveDocument()
및 Document.getActiveTab()
를 사용합니다.
문서 구조
Apps Script의 관점에서 Google Docs 문서는 HTML 문서와 매우 유사한 구조를 갖습니다. 즉, 문서는 하나 이상의 Tab
객체로 구성되며, 각 객체는 다른 요소를 포함하는 요소 (예: Paragraph
또는 Table
)를 포함하는 경우가 많습니다. Google Docs 문서를 수정하는 대부분의 스크립트는 getTab()
및 asDocumentTab()
호출로 시작하고 그 뒤에 getBody()
가 나옵니다. Body
는 HeaderSection
, FooterSection
, Footnotes
를 제외한 탭의 다른 모든 요소를 포함하는 핵심 요소이기 때문입니다.
그러나 어떤 유형의 요소가 다른 유형을 포함할 수 있는지에 관한 규칙이 있습니다. 또한 Apps Script의 문서 서비스는 특정 유형의 요소만 다른 요소에 삽입할 수 있습니다. 아래의 트리는 특정 유형의 요소에 포함될 수 있는 요소를 보여줍니다.
굵게 표시된 요소는 삽입할 수 있습니다. 굵게 표시되지 않은 요소는 제자리에서만 조작할 수 있습니다.
- 문서
- 탭
- DocumentTab
- 본문
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 표
- ListItem
- 바닥글 섹션
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 표
- ListItem
- FootnoteSection
- DocumentTab
- 탭
텍스트 바꾸기
Apps Script는 Google Docs에서 텍스트를 바꾸는 데 자주 사용됩니다. 클라이언트 정보가 가득한 스프레드시트가 있고 각 클라이언트를 위한 맞춤형 Google 문서를 생성하려 한다고 가정해 보겠습니다. 이러한 유형의 작업을 메일 병합이라고 합니다.
텍스트를 대체하는 방법에는 여러 가지가 있지만 가장 간단한 방법은 아래 예에 나온 replaceText()
메서드입니다. replaceText
는 JavaScript의 정규 표현식 기능 대부분을 지원합니다. 아래의 첫 번째 함수는 Google Docs에 여러 줄의 자리표시자 텍스트를 추가합니다. 실제로는 문서에 자리표시자를 직접 입력할 가능성이 더 큽니다. 두 번째 함수는 자리표시자를 client
객체에 정의된 속성으로 바꿉니다.
이 두 함수 모두 Google Docs 문서 내에서 만든 스크립트에만 적용되는 getActiveDocument()
및 getActiveTab()
메서드를 사용합니다. 독립형 스크립트에서는 Document.getTab()
와 함께 DocumentApp.create()
, openById()
또는 openByUrl()
를 사용하세요.
자리표시자 추가
function createPlaceholders() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().getBody(); body.appendParagraph('{name}'); body.appendParagraph('{address}'); body.appendParagraph('{city} {state} {zip}'); }
자리표시자 바꾸기
function searchAndReplace() { var body = DocumentApp.getActiveDocument().getActiveTab().asDocumentTab().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 Docs를 맞춤설정할 수 있습니다. 그러나 스크립트는 열려 있는 문서의 현재 인스턴스에 대한 UI와만 상호작용할 수 있으며, 스크립트가 문서에 바인딩된 경우에만 상호작용할 수 있습니다.
Google Docs에 맞춤 메뉴 및 대화상자를 추가하는 방법을 알아보세요. 대화상자 또는 사이드바의 맞춤 인터페이스를 만드는 방법에 관한 자세한 내용은 HTML 서비스 가이드를 참고하세요. 맞춤 인터페이스를 부가기능의 일부로 게시하려는 경우 Google Docs 편집기의 스타일 및 레이아웃과 일관성을 유지하기 위해 스타일 가이드를 따르세요.
Google Docs용 부가기능
부가기능은 Google Docs 내에서 실행되며 Google Docs 부가기능 스토어에서 설치할 수 있습니다. Google Docs용 스크립트를 개발했으며 이를 전 세계와 공유하려는 경우 Apps Script를 사용하면 다른 사용자가 부가기능 스토어에서 설치할 수 있도록 스크립트를 부가기능으로 게시할 수 있습니다.
Google Docs용 부가기능을 만드는 방법을 알아보려면 Docs 부가기능 빌드 빠른 시작을 참고하세요.
트리거
Google Docs에 바인딩된 스크립트는 간단한 트리거를 사용하여 문서에 대한 수정 액세스 권한이 있는 사용자가 Google Docs에서 문서를 열 때마다 발생하는 문서의 onOpen
이벤트에 응답할 수 있습니다.
트리거를 설정하려면 onOpen()
이라는 함수를 작성하기만 하면 됩니다. 이 트리거의 예는 Google Workspace의 맞춤 메뉴를 참고하세요.
간단한 트리거는 메뉴를 추가하는 데 유용하지만 승인이 필요한 Apps Script 서비스를 사용할 수 없습니다.