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

如何用Google Script实现Google文档指定格式内容的查找与高亮?

解决Google文档中高亮特定格式字符串的方案

核心思路

用Google Apps Script结合正则表达式,精准匹配X-X-Xr格式的字符串(X为大写字母/数字),覆盖它在两空格之间、冒号后这两种出现场景,最后高亮目标内容。

实现代码

function highlightTargetStrings() {
  const doc = DocumentApp.getActiveDocument();
  const body = doc.getBody();
  // 正则匹配:前置边界为开头、空格或冒号;目标为A-Z0-9-A-Z0-9-A-Z0-9r;后置边界为空格或结尾
  const searchPattern = "(?:^|\\s|:)([A-Z0-9]-[A-Z0-9]-[A-Z0-9]r)(?:\\s|$)";
  let searchResult = body.findText(searchPattern);
  
  while (searchResult) {
    const element = searchResult.getElement();
    const textElement = element.asText();
    const fullText = textElement.getText();
    const match = fullText.match(searchPattern);
    
    if (match && match[1]) {
      // 定位目标字符串在当前文本元素中的准确起止位置
      const targetStart = fullText.indexOf(match[1], searchResult.getStartOffset());
      const targetEnd = targetStart + match[1].length - 1;
      // 设置高亮背景色(这里用黄色,可替换为其他十六进制颜色代码)
      textElement.setBackgroundColor(targetStart, targetEnd, "#FFFF00");
    }
    
    // 查找下一个匹配项
    searchResult = body.findText(searchPattern, searchResult);
  }
}

关键说明

  • 正则设计细节:
    • (?:^|\\s|:):非捕获组,匹配目标的前置边界,避免误匹配其他位置的字符串
    • ([A-Z0-9]-[A-Z0-9]-[A-Z0-9]r):捕获组,精准锁定需要高亮的目标内容
    • (?:\\s|$):非捕获组,匹配目标的后置边界,确保只匹配独立出现的目标
  • 高亮范围控制:通过indexOf定位捕获组内容的位置,避免把冒号、空格这类边界字符也高亮
  • 全文档遍历:用while循环持续查找下一个匹配,确保所有符合条件的内容都被处理

使用步骤

  1. 在Google文档里打开脚本编辑器(工具 > 脚本编辑器)
  2. 粘贴上述代码,保存后运行
  3. 如需调整高亮颜色,替换#FFFF00为目标十六进制颜色代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:30:18