Google Apps Script를 사용하면 프로그래매틱 방식으로 Docs를 만들고 수정할 수 있을 뿐만 아니라 새 메뉴, 대화상자, 사이드바로 사용자 인터페이스를 맞춤설정할 수 있습니다.
기본 사항
Apps Script는 두 가지 광범위한 방식으로 Docs와 상호작용할 수 있습니다. 스크립트의 사용자에게 문서에 대한 적절한 권한이 있는 경우 모든 스크립트가 문서를 만들거나 수정할 수 있으며, 스크립트를 문서에 바인딩할 수도 있습니다. 이렇게 하면 스크립트가 사용자 인터페이스를 변경하거나 문서가 열릴 때 응답하는 특별한 기능을 제공합니다. Docs 내에서 컨테이너 바인딩 스크립트를 만들려면 확장 프로그램 > Apps Script를 클릭합니다.
어떤 경우든 다음 예와 같이 Apps Script의 문서 서비스를 사용하여 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
또는 openByUrl로 바꿔 기존 문서에 이러한 변경사항을 적용할 수도 있습니다.DocumentApp.openById
문서 내에서 만든 스크립트 (컨테이너 바인딩)의 경우
DocumentApp.getActiveDocument
및 Document.getActiveTab을 사용합니다.
문서 구조
Apps Script의 관점에서 Docs 문서는 HTML 문서와 매우 유사하게 구성됩니다. 즉, 문서는 하나 이상의 Tab 객체로 구성되며 각 객체에는 다른 요소를 포함하는 요소 (Paragraph 또는 Table과 같은)가 포함됩니다. Docs 문서를 수정하는 대부분의 스크립트는 getTab 호출로 시작한 후 asDocumentTab를 호출합니다. Body는 HeaderSection, FooterSection, Footnotes를 제외한 탭의 다른 모든 요소를 포함하는 핵심 요소이기 때문입니다.getBody
그러나 다른 유형의 요소를 포함할 수 있는 요소 유형에 관한 규칙이 있습니다. 또한 Apps Script의 문서 서비스는 특정 유형의 요소만 다른 요소에 삽입할 수 있습니다. 다음 트리는 특정 유형의 요소에 포함될 수 있는 요소를 보여줍니다.
굵게 표시된 요소는 삽입할 수 있으며, 굵게 표시되지 않은 요소는 제자리에서만 조작할 수 있습니다.
- 문서
- 탭
- DocumentTab
- 본문
- HeaderSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 표
- ListItem
- FooterSection
- ListItem
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 단락
- HorizontalRule
- InlineDrawing
- InlineImage
- 텍스트
- UnsupportedElement (페이지 번호 등)
- 표
- ListItem
- FootnoteSection
- DocumentTab
- 탭
텍스트 바꾸기
Apps Script는 Docs에서 텍스트를 바꾸는 데 자주 사용됩니다. 클라이언트 정보가 가득한 스프레드시트가 있고 각 클라이언트에 맞춤 Docs를 생성하려는 경우를 가정해 보겠습니다. (이러한 유형의 작업을 메일 병합이라고 합니다.)
대부분의 JavaScript
정규 표현식
기능을 지원하는 replaceText
메서드를 사용하여 텍스트를 바꿀 수 있습니다. 다음 예에서 첫 번째 함수는 문서에 자리표시자 텍스트를 추가하고 두 번째 함수는 해당 텍스트를 client 객체의 속성으로 바꿉니다.
이러한 두 함수는 모두 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);
}
맞춤 메뉴 및 사용자 인터페이스
맞춤 메뉴, 대화상자, 사이드바를 추가하여 Docs를 맞춤설정할 수 있습니다. 스크립트는 바인딩된 문서의 UI와만 상호작용할 수 있습니다.
HTML 및 CSS로 맞춤 인터페이스를 만드는 방법을 자세히 알아보려면 HTML 서비스 가이드를 참고하세요. 인터페이스를 부가기능으로 게시하려는 경우 스타일 가이드에 따라 Docs 편집기와 일관된 모양을 유지하세요.
Docs 부가기능
부가기능은 Docs 내에서 실행되며 Docs 부가기능 스토어에서 설치할 수 있습니다. Docs용 스크립트를 개발하고 전 세계와 공유하려는 경우 Apps Script를 사용하면 스크립트를 부가기능으로 게시하여 다른 사용자가 부가기능 스토어에서 설치할 수 있습니다.
Docs용 부가기능을 만들려면 Docs 부가기능 빌드 빠른 시작을 참고하세요.
트리거
Google Docs에 바인딩된 스크립트는 간단한 트리거를 사용하여 문서에 대한 수정 액세스 권한이 있는 사용자가 Docs에서 문서를 열 때마다 발생하는 문서의 onOpen 이벤트에 응답할 수 있습니다.
트리거를 설정하려면 onOpen이라는 함수를 작성합니다. 이 트리거의 예는 Google Workspace의 맞춤 메뉴를 참고하세요.
트리거는 메뉴를 추가하는 데 유용하지만 승인이 필요한 Apps Script 서비스를 사용할 수는 없습니다.