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

如何用Google Apps Script循环替换Google Docs中的引用字母为数字

解决Google Docs中引用字母标记转数字的方案

嘿,这个用字母占位替代引用编号的思路真的很实用——完美避开了新增引用后手动重排数字的麻烦!下面给你一套基于Google Apps Script的自动替换方案,能帮你批量把[a]转成[1]、[b]转成[2],甚至支持大小写字母的匹配:

核心思路

  1. 先建立字母→数字的映射关系(a对应1,b对应2…z对应26);
  2. 遍历整个Google文档的所有文本内容;
  3. 用正则表达式精准匹配[字母]格式的标记;
  4. 把每个匹配到的字母替换成对应的数字,保持方括号格式不变。

完整代码实现

打开你的Google文档,点击「工具」→「脚本编辑器」,把下面的代码粘贴进去:

function replaceCitationLettersWithNumbers() {
  // 获取当前打开的Google文档
  const doc = DocumentApp.getActiveDocument();
  const body = doc.getBody();
  
  // 建立字母到数字的映射:a→1, b→2...z→26,支持大小写
  const letterToNumber = {};
  // 遍历a-z的ASCII码,97是a,122是z
  for (let i = 97; i <= 122; i++) {
    const letter = String.fromCharCode(i);
    letterToNumber[letter] = (i - 96).toString();
    // 同时添加大写字母的映射
    letterToNumber[letter.toUpperCase()] = (i - 96).toString();
  }
  
  // 正则表达式:匹配方括号包裹的单个字母(比如[a], [B])
  const citationRegex = /\[([a-zA-Z])\]/g;
  
  // 遍历文档中的所有段落
  const paragraphs = body.getParagraphs();
  paragraphs.forEach(paragraph => {
    // 获取段落的文本内容
    let text = paragraph.getText();
    
    // 执行替换:找到所有匹配的[字母],替换为[对应数字]
    const newText = text.replace(citationRegex, (match, letter) => {
      const number = letterToNumber[letter];
      // 如果匹配到的字母在映射里,就替换,否则保留原内容
      return number ? `[${number}]` : match;
    });
    
    // 把替换后的文本写回段落
    if (newText !== text) {
      paragraph.setText(newText);
    }
  });
  
  // 弹出提示,告知替换完成
  DocumentApp.getUi().alert("引用标记替换完成!");
}

使用步骤

  1. 粘贴代码后,点击脚本编辑器顶部的「运行」按钮(三角形图标);
  2. 第一次运行会要求授权,按照提示完成权限验证(Google会提示脚本是未验证的,这是正常的,因为是你自己编写的脚本,放心授权即可);
  3. 授权完成后,脚本会自动遍历文档并替换所有符合格式的引用标记,完成后会弹出提示框。

扩展说明

  • 如果你的引用超过26个(比如需要[aa]→[27]),可以扩展映射逻辑,比如把多字母组合转换成对应的数字(类似Excel列号转数字的逻辑);
  • 如果你只想匹配小写字母,把正则里的[a-zA-Z]改成[a-z]即可;
  • 脚本只会替换单个字母包裹在方括号里的内容,不会影响其他格式的文本,比如abc或者[123]这类内容不会被修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:37:53