텍스트 서식 지정

이 페이지에서는 Google Docs API를 사용하여 텍스트 형식을 지정하는 방법을 설명합니다.

서식 지정 정보

문서의 텍스트 콘텐츠에 적용할 수 있는 두 가지 형식이 있습니다.

  • 글꼴, 색상, 밑줄과 같은 문자 서식을 변경할 수 있습니다.
  • 들여쓰기 또는 줄 간격과 같은 단락 서식을 변경할 수 있습니다.

문자 서식 변경

문자 서식은 문서에서 텍스트 문자의 렌더링을 결정합니다.

적용하는 모든 서식은 기본 단락의 TextStyle에서 상속된 기본 서식을 재정의합니다. 반대로 서식을 설정하지 않은 문자는 계속해서 단락의 스타일을 상속받습니다.

텍스트의 문자 서식을 변경하려면 UpdateTextStyleRequest와 함께 batchUpdate를 사용합니다. 다음 정보가 포함된 범위 객체를 제공해야 합니다.

  • 텍스트가 포함된 헤더, 바닥글, 각주 또는 지정되지 않은 경우 본문을 식별하는 segmentId입니다.
  • 서식이 지정될 세그먼트 내 텍스트 범위를 정의하는 startIndexendIndex입니다.
  • 텍스트가 포함된 탭을 식별하는 tabId입니다.

다음 예에서는 헤더에 포함된 텍스트에 여러 텍스트 스타일 지정 작업을 실행합니다.

  • 1~5번 문자의 글꼴을 굵은 기울임꼴로 설정합니다.
  • 6~10번 문자의 색상을 blue 14포인트 Times New Roman 글꼴로 설정합니다.
  • 11~15자를 www.example.com에 하이퍼링크합니다.

이를 수행하는 가장 간단한 방법은 요청 목록을 빌드한 다음 하나의 batchUpdate 호출을 사용하는 것입니다.

자바

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateTextStyle(new UpdateTextStyleRequest()
        .setTextStyle(new TextStyle()
                .setBold(true)
                .setItalic(true))
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(5)
                .setTabId(TAB_ID))
        .setFields("bold")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(6)
                        .setEndIndex(10)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setWeightedFontFamily(new WeightedFontFamily()
                                .setFontFamily("Times New Roman"))
                        .setFontSize(new Dimension()
                                .setMagnitude(14.0)
                                .setUnit("PT"))
                        .setForegroundColor(new OptionalColor()
                                .setColor(new Color().setRgbColor(new RgbColor()
                                        .setBlue(1.0F)
                                        .setGreen(0.0F)
                                        .setRed(0.0F)))))
                .setFields("foregroundColor,weightedFontFamily,fontSize")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(11)
                        .setEndIndex(15)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setLink(new Link()
                                .setUrl("www.example.com")))
                .setFields("link")));


BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 1,
                'endIndex': 5,
                'tabId': TAB_ID
            },
            'textStyle': {
                'bold': True,
                'italic': True
            },
            'fields': 'bold,italic'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 6,
                'endIndex': 10,
                'tabId': TAB_ID
            },
            'textStyle': {
                'weightedFontFamily': {
                    'fontFamily': 'Times New Roman'
                },
                'fontSize': {
                    'magnitude': 14,
                    'unit': 'PT'
                },
                'foregroundColor': {
                    'color': {
                        'rgbColor': {
                            'blue': 1.0,
                            'green': 0.0,
                            'red': 0.0
                        }
                    }
                }
            },
            'fields': 'foregroundColor,weightedFontFamily,fontSize'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 11,
                'endIndex': 15,
                'tabId': TAB_ID
            },
            'textStyle': {
                'link': {
                    'url': 'www.example.com'
                }
            },
            'fields': 'link'
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()

단락 서식 변경하기

Google Docs API를 사용하면 문서에서 텍스트 블록이 렌더링되는 방식을 결정하는 단락 형식을 업데이트할 수 있습니다(예: 정렬, 들여쓰기).

적용하는 모든 서체는 기본적으로 기본 문단 스타일에서 상속된 기본 서체를 재정의합니다. 반대로 설정하지 않은 서식 지정 기능은 계속해서 단락 스타일에서 상속됩니다. 단락 스타일 및 상속에 관한 자세한 내용은 ParagraphStyle을 참고하세요.

아래 예에서는 단락의 형식을 다음과 같이 지정합니다.

  • 명명된 스타일의 제목
  • 위의 맞춤 간격
  • 아래 맞춤 간격
  • 맞춤 왼쪽 테두리

그 밖의 모든 단락 형식 지정 기능은 기본 이름이 지정된 스타일에서 계속 상속됩니다.

자바

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(10)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setNamedStyleType("HEADING_1")
                .setSpaceAbove(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT"))
                .setSpaceBelow(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT")))
        .setFields("namedStyleType,spaceAbove,spaceBelow")
));

requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(10)
                .setEndIndex(20)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setBorderLeft(new ParagraphBorder()
                        .setColor(new OptionalColor()
                                .setColor(new Color()
                                        .setRgbColor(new RgbColor()
                                                .setBlue(1.0F)
                                                .setGreen(0.0F)
                                                .setRed(0.0F)
                                        )
                                )
                        )
                        .setDashStyle("DASH")
                        .setPadding(new Dimension()
                                .setMagnitude(20.0)
                                .setUnit("PT"))
                        .setWidth(new Dimension()
                                .setMagnitude(15.0)
                                .setUnit("PT")
                        )
                )
        )
        .setFields("borderLeft")
));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 1,
                'endIndex':  10,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'namedStyleType': 'HEADING_1',
                'spaceAbove': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                },
                'spaceBelow': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                }
            },
            'fields': 'namedStyleType,spaceAbove,spaceBelow'
        }
    },
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 10,
                'endIndex':  20,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'borderLeft': {
                    'color': {
                        'color': {
                            'rgbColor': {
                                'blue': 1.0,
                                'green': 0.0,
                                'red': 0.0
                            }
                        }
                    },
                    'dashStyle': 'DASH',
                    'padding': {
                        'magnitude': 20.0,
                        'unit': 'PT'
                    },
                    'width': {
                        'magnitude': 15.0,
                        'unit': 'PT'
                    },
                }
            },
            'fields': 'borderLeft'
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()