设置文本格式

本页介绍了如何使用 Google 文档 API 设置文本格式。

格式设置简介

您可以对文档的文本内容应用两种不同的格式:

  • 您可以更改字符格式,例如字体、颜色或下划线。
  • 您可以更改段落格式,例如缩进或行间距。

更改字符格式

字符格式决定了文档中文本字符的呈现方式。

您应用的任何格式都会覆盖从底层段落的 TextStyle 继承的默认格式。反之,未设置格式的任何字符都将继续继承段落的样式。

如需更改文本的字符格式,请将 batchUpdateUpdateTextStyleRequest 搭配使用。您需要提供一个 Range 对象,其中包含以下信息:

  • 一个 segmentId,用于标识包含文本的标题、页脚、脚注(如果未指定,则为正文)。
  • startIndexendIndex,用于定义要设置格式的细分中的文本范围。
  • 一个 tabId,用于标识包含文本的标签页。

以下示例对标题中包含的文本执行了几项文本样式操作:

  • 将字符 1-5 的字体设置为粗体斜体。
  • 将字符 6-10 的颜色设置为 blue 14 号 Times New Roman 字体。
  • 将超链接字符 11-15 更改为 www.example.com

实现此目的的一种简单方法是构建请求列表,然后使用一个 batchUpdate 调用:

Java

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 文档 API,您可以更新段落格式,该格式决定文档中文本块的呈现方式,包括对齐和缩进等功能。

您应用的任何格式都会替换从底层段落样式继承的默认格式。反之,您未设置的任何格式功能将继续继承段落样式。如需详细了解段落样式和继承,请参阅 ParagraphStyle

以下示例为段落指定了以下格式:

  • 作为命名样式的标题
  • 上方自定义间距
  • 下方自定义间距
  • 自定义左边框

段落的所有其他格式设置仍会继承自底层命名样式。

Java

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()