使用Google Script获取新创建Google Docs页码失败求助
解决Google Script获取Google Docs页码的问题
你的原代码始终返回1,问题出在两个核心点:
- 刚创建的文档直接转PDF时,Google Docs还没完成自动分页的渲染计算,生成的是未正确分页的PDF版本
- 用
/Contents正则匹配页码的逻辑完全不可靠——PDF结构里的/Contents标签和实际页数没有对应关系,不同生成场景下这个标签的数量和页数不挂钩
下面给你两种靠谱的解决方法:
方法一:使用Drive API(最准确)
这个方法需要先启用Google Apps Script的高级Drive服务:
- 在脚本编辑器顶部点击「扩展」>「Apps Script」(已在编辑器内可跳过)
- 点击左侧菜单栏「服务」>「添加服务」,找到「Drive API」并启用
然后用以下代码获取页码:
// 确保文档已保存并完成渲染 if (!doc.getId()) { doc.saveAndClose(); } // 获取文档PDF格式的页数元数据 var pdfMetadata = Drive.Files.get(doc.getId(), {fields: 'pageCount'}); var pageCount = pdfMetadata.pageCount; Logger.log(pageCount);
方法二:通过文档元素统计(仅适用于手动分页场景)
如果你的文档是手动插入分页符的,可以通过统计分页符数量计算页码,但自动分页的情况不适用:
// 保存并重新打开文档,确保分页生效 doc.saveAndClose(); var doc = DocumentApp.openById(doc.getId()); var body = doc.getBody(); // 统计分页符元素数量,总页数=分页符数+1 var pageBreakCount = body.getPageBreakElements().length; var pageCount = pageBreakCount + 1; Logger.log(pageCount);
关键注意事项
- 无论用哪种方法,都必须先调用
saveAndClose(),否则Google Docs不会完成分页计算,获取的页码会不准确 - 方法一的Drive API方案是唯一能准确统计自动分页文档页码的方式
内容的提问来源于stack exchange,提问作者Lê Phong Nguyễn
相关产品推荐
相关产品推荐

