使用Google Script查找并替换谷歌文档首页页脚的最后修改日期
Google Doc首页页脚修改日期自动更新脚本实现
需求
编写Google Script脚本,在不破坏Google Doc现有格式的前提下,查找替换设置了「首页不同」的文档首页页脚内的最后修改日期,将其更新为文档的最新修改时间。
初始错误代码
function lastEdited() { var doc = DocumentApp.getActiveDocument(); var id = doc.getId(); var file = Drive.Files.get(id); var footer = doc.getFooter(); var date = file.modifiedDate; var first_footer = footer.getParent().getChild(2); first_footer.replaceText("^\d[0-9]*\/\d[0-9]*\/\d{4}$", Utilities.formatDate(new Date(date), 'GMT+5', 'YYYY/MM/dd')); }
错误原因说明
- 调用
Drive.Files.get()依赖高级Drive API服务,未提前开启的场景下会直接报错 - 首页页脚节点索引取值错误,
getChild(2)无法命中开启「首页不同」设置后的首页页脚对象 - 正则表达式适配性差,仅支持全内容为日期的场景,无法匹配页脚内混有其他内容的日期
可正常运行的最终代码
function lastedited(){ var doc = DocumentApp.getActiveDocument(); var id = doc.getId(); var file = DriveApp.getFileById(id); var date = file.getLastUpdated(); var footer = doc.getFooter(); var first_footer = footer.getParent().getChild(4); var regExp = "[0-9]*[\/\-][0-9]*[\/\-][0-9][0-9][0-9][0-9]"; var date_srting = Utilities.formatDate(new Date(date), 'GMT-4', 'MM/dd/YYYY'); first_footer.replaceText(regExp,date_srting); }
调整说明
- 改用原生内置的
DriveApp.getFileById()方法获取文件对象,无需额外开启高级服务即可运行 - 修正首页页脚节点索引为
getChild(4),可正确读取「首页不同」设置下的独立首页页脚内容 - 优化正则规则,支持匹配用
/或-作为分隔符的任意位置日期,适配更多页脚排版场景 - 时区可根据自身所在区域调整,国内用户可将
GMT-4修改为GMT+8适配北京时间
内容的提问来源于stack exchange,提问作者LimaTengoBravo
相关产品推荐
相关产品推荐

