You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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);
  });
}

关键修改说明

  1. 单位转换:Google Docs使用磅作为缩进单位,通过4 * 28.3465将4cm转换为对应的磅值,保证缩进精度。
  2. 样式覆盖:脚本同时处理段落格式(缩进、行距、间距、对齐)和文本格式(字体、字号),覆盖所有需求项。
  3. 避免重复处理:使用Set存储已处理的段落,防止同一段落被多次修改(当选中段落内部分文本时)。
  4. 菜单优化:将菜单和菜单项名称改为更贴合学术场景的表述,方便使用。

内容的提问来源于stack exchange,提问作者Mosna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:07:48