如何在Google Apps Script中提取Google Docs Heading2的编号前缀与数字?
解决Google Docs Apps Script获取带前缀编号Heading2的问题
问题核心:你用paragraph.getText()拿不到“Chapter X.”这类自动编号前缀,是因为Google Docs的自定义列表编号属于段落的列表属性,并非文本内容的一部分,getText()只会返回标题的正文部分。
解决方案
通过段落的列表项API获取完整的编号前缀,再提取其中的数字:
- 先判断当前HEADING2段落是否属于列表项(即存在编号)
- 获取列表项的显示字符串(包含前缀和数字)
- 用正则匹配提取数字
修改后的代码如下:
if (paragraph.getHeading() === DocumentApp.ParagraphHeading.HEADING2) { const listItem = paragraph.getListItem(); // 仅处理带编号的Heading2段落 if (listItem) { const listString = listItem.getListString(); // 匹配"Chapter 数字."格式的前缀 const chapterMatch = /Chapter\s+(\d+)\./i.exec(listString); if (chapterMatch) { // 更新章节号并重置计数器 chapterNumber = parseInt(chapterMatch[1], 10); figureCounter = 0; tableCounter = 0; } } }
注意事项
getListString()会返回完整的显示编号(比如示例中的"Chapter 6."),确保正则表达式和你的编号格式匹配- 如果后续编号格式调整(比如改成"Chapter X"不带点),只需要修改正则表达式即可
内容的提问来源于stack exchange,提问作者Gabriel Cretin
相关产品推荐
相关产品推荐

