首页 > 解决方案 > textreplace 谷歌应用脚​​本中的正则表达式不起作用

问题描述

尝试使用正则表达式仅按日期替换文本 + 日期,但它不起作用:

function myfunction() {  
   var SourceFolder = DriveApp.getFolderById("");
   var Files = SourceFolder.getFiles()
   var body = DocumentApp.getActiveDocument().getBody();
   while(Files.hasNext()) {
       var file = Files.next();
       body.replaceText("Date: \d{2}.\d{2}.\d{4}", "31.10.2020")
   }  
 }

谢谢

标签: regexgoogle-apps-script

解决方案


在您的代码中,var body = DocumentApp.getActiveDocument().getBody();在循环之外声明,因此您始终在循环中引用活动文档主体while

您可以使用

while(Files.hasNext()) {
   var file = Files.next();
   var doc = DocumentApp.openById(file.getId()); 
   var body = doc.getBody();
   body.replaceText("Date: \\d{2}\\.\\d{2}\\.\\d{4}", "31.10.2020")
}  

这里的要点是在模式中使用双反斜杠,并转义点字符,因为否则 a.匹配除换行符之外的任何字符。


推荐阅读