【发布时间】:2018-09-22 18:32:10
【问题描述】:
我正在尝试使用 Apps 脚本从 Google 文档中读取段落的属性。当我读取属性时,一些 BOLD 属性返回为 null。
这是我读取属性的示例脚本。
// 读取此 Google 文档中每个段落的属性并打印所有粗体的段落文本
function readAttributes() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var paras = body.getParagraphs();
for (var i = 0; i < paras.length; i++){
var paragraph = paras[i];
var attribute = paragraph.getAttributes();
if (attribute.BOLD === true) {
Logger.log(paragraph.getText());
}
}
}
这是一个模拟的示例文档: 该脚本位于此 Google 文档的后面。文件 -> 制作副本。
https://docs.google.com/document/d/13FYg8AAk6PX9TEUdgfaT-60Vi5xoQlZ9Moink5guLH0/edit?usp=sharing
我的文档有什么问题?只有第18题的属性返回为BOLD,第17题的属性返回为null。
Google 文档中任何段落的返回 Attribute 对象如下所示。
{
FONT_SIZE=null,
ITALIC=null,
HORIZONTAL_ALIGNMENT=null,
INDENT_END=null,
INDENT_START=null,
LINE_SPACING=1.0,
LINK_URL=null,
UNDERLINE=null,
BACKGROUND_COLOR=null,
INDENT_FIRST_LINE=null,
LEFT_TO_RIGHT=true,
SPACING_BEFORE=null,
HEADING=Normal,
SPACING_AFTER=null,
STRIKETHROUGH=null,
FOREGROUND_COLOR=null,
BOLD=null,
FONT_FAMILY=Calibri
}
我的 Logger.log() 结果:
预期输出:
- 如果您的车辆在驾驶时起火,以下哪项是最有效的行动计划?
- 出行前,您需要检查轮胎。哪些问题需要立即采取行动?
结果输出:
- 出行前,您需要检查轮胎。哪些问题需要立即采取行动?
显示问题的图片
很明显文档中的问题17有问题,所以它的BOLD属性为空。
【问题讨论】:
-
不确定,但有效和计划之间的空格是斜体和粗体。也许整个段落不被认为是粗体,而只是单个文本元素。也许试试
paragraph.editAsText().getAttribute(offset)? -
@I'-'I 例如有一段文字为
sample,除a外的所有字符都是BOLD属性。当paragraph.editAsText().getAttributes(offset)用于搜索BOLD属性时,当其中仅包含一个普通字符(a)时,似乎BOLD的属性对于所有偏移量都变为null。这可能是规范。但是当使用isBold(offset)时,即使段落中包含一个普通字符,除了a之外的字符显示true。
标签: google-apps-script google-docs