【问题标题】:Regex in textreplace google app script is not workingtextreplace 谷歌应用脚​​本中的正则表达式不起作用
【发布时间】:2020-11-28 00:22:30
【问题描述】:

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

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")
   }  
 }

谢谢

【问题讨论】:

  • 反斜杠必须加倍,. 应转义:.replaceText("Date: \\d{2}\\.\\d{2}\\.\\d{4}", "31.10.2020")
  • 非常感谢 Wiktor 可以使用双反斜杠。但是脚本不想在文件夹中的所有文件中更改它 - Files.hasNext() 不起作用,也许有人对此有任何想法
  • 这行可能有问题 var body = DocumentApp.getActiveDocument().getBody();但我没有在 api 中找到任何其他内容
  • 解决:var doc = DocumentApp.openById(file.getId()); var body = doc.getBody();

标签: regex google-apps-script


【解决方案1】:

在您的代码中,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")
}  

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

【讨论】:

  • 非常感谢 U Wiktor 的帮助。我现在退格有问题)))在“日期:”和第一个“\\”之间
  • 如果您还有其他问题,请发布新问题。
【解决方案2】:

函数替换文本(){

   // Get speadshhet with ID
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheets()[0];
   
   // Returns cell with ID (User will insert his or her folder ID in cell B3)
   var range = sheet.getRange(3, 2);
   var values = range.getDisplayValue(); 
   
   // Get folder by ID - insert your folder ID
   var SourceFolder = DriveApp.getFolderById(values); 
   
   // Iterate throw all files in folder
   var Files = SourceFolder.getFiles();
   while(Files.hasNext()) {
       var file = Files.next();
     
   //  Get all documents ID  
       var doc = DocumentApp.openById(file.getId());
       
   //  Get text body to replace  
       var body = doc.getBody();

   //  Insert header in document + alignment  
       var header = body.insertParagraph(0, 'TEXT');
       header.setAlignment(DocumentApp.HorizontalAlignment.RIGHT)
       
   // Text style    
       var style = {};
       //style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.RIGHT;
       style[DocumentApp.Attribute.FONT_FAMILY] = 'Arial';
       style[DocumentApp.Attribute.FONT_SIZE] = 9;
       style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#000000';
       body.setAttributes(style)
       Logger.log(body)
       
    // Replacing text   
       body.replaceText("Text", " ");
       body.replaceText("Date:\\s*\\d{2}\\.\\d{2}\\.\\d{4}", "31.10.2020")
       
       var paragraphs = body.getParagraphs();
       for (var i = 7; i < paragraphs.length; i++) { 
          var paragraph = paragraphs[i];
          paragraph.setAlignment(DocumentApp.Horizontal`enter code here`Alignment.LEFT)
    }
  }
}

【讨论】:

  • 我在项目结束时得到的这段代码。也许它对某人有用
猜你喜欢
  • 1970-01-01
  • 2016-08-21
  • 2019-02-14
  • 2015-02-16
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多