如何修改Google Docs脚本实现指定段落格式配置?
Google Docs 学术段落样式定制脚本
需求说明
需要实现的段落配置:
- 首行缩进4cm
- Arial字体,字号10
- 单倍行距
- 段落前后保留1.5倍间距
- 文本两端对齐
修改后的完整脚本
// 文档打开时添加自定义菜单 function onOpen() { DocumentApp.getUi() .createMenu('学术样式') .addItem('应用学术段落样式', 'applyAcademicStyle') .addToUi(); } // 定义需要应用的样式参数 var academicStyle = { fontFamily: 'Arial', fontSize: 10, // 1cm≈28.3465磅,转换4cm为对应磅值 indentFirstLine: 4 * 28.3465, lineSpacing: 1, spaceBefore: 1.5, spaceAfter: 1.5, alignment: DocumentApp.HorizontalAlignment.JUSTIFIED }; // 处理选中元素的辅助函数 function withSelectedParagraphs(process) { var selection = DocumentApp.getActiveDocument().getSelection(); if (!selection) return; var selectedElements = selection.getSelectedElements(); var processedParagraphs = new Set(); // 避免重复处理同一段落 selectedElements.forEach(function(element) { var docElement = element.getElement(); var paragraph; // 获取元素所属的段落 if (docElement.getType() === DocumentApp.ElementType.PARAGRAPH) { paragraph = docElement; } else if (docElement.getParent().getType() === DocumentApp.ElementType.PARAGRAPH) { paragraph = docElement.getParent(); } else { return; // 跳过非段落内的元素 } if (processedParagraphs.has(paragraph)) return; processedParagraphs.add(paragraph); // 处理段落样式 process(paragraph); }); } // 应用样式的主函数 function applyAcademicStyle() { withSelectedParagraphs(function(paragraph) { // 设置段落格式 paragraph.setFirstLineIndent(academicStyle.indentFirstLine); paragraph.setLineSpacing(academicStyle.lineSpacing); paragraph.setSpacingBefore(academicStyle.spaceBefore); paragraph.setSpacingAfter(academicStyle.spaceAfter); paragraph.setAlignment(academicStyle.alignment); // 设置文本字体和字号 var text = paragraph.editAsText(); text.setFontFamily(academicStyle.fontFamily); text.setFontSize(academicStyle.fontSize); }); }
关键修改说明
- 单位转换:Google Docs使用磅作为缩进单位,通过
4 * 28.3465将4cm转换为对应的磅值,保证缩进精度。 - 样式覆盖:脚本同时处理段落格式(缩进、行距、间距、对齐)和文本格式(字体、字号),覆盖所有需求项。
- 避免重复处理:使用Set存储已处理的段落,防止同一段落被多次修改(当选中段落内部分文本时)。
- 菜单优化:将菜单和菜单项名称改为更贴合学术场景的表述,方便使用。
内容的提问来源于stack exchange,提问作者Mosna
相关产品推荐
相关产品推荐

