【问题标题】:Removing line breaks using Docs GAS使用 Docs GAS 删除换行符
【发布时间】:2017-02-27 07:18:58
【问题描述】:

我想使用 Docs 的 Google Apps 脚本删除所有带空格的换行符

var doc = DocumentApp.getActiveDocument();
var body = doc.getBody().editAsText();
body.replaceText("\\t", " "); //works properly for tabs
body.replaceText("\\n", " "); //doesnt work

https://developers.google.com/apps-script/reference/document/body#replacetextsearchpattern-replacement

有什么建议吗?

【问题讨论】:

  • 试试body.replaceText("[\n\r]+", " ");body.replaceText("\\v", " ");
  • 我试过但没有替换var doc = DocumentApp.getActiveDocument(); var body = doc.getBody().editAsText(); body.replaceText("\\v", " ");
  • "[\n\r]+" 呢?
  • 如果您共享文档会更有帮助。

标签: regex google-apps-script escaping google-docs


【解决方案1】:

似乎body.replaceText 不允许替换段落之间的内容(段落中断)。

您需要以某种方式将所有段落合并为 1 个段落。大致可以用下面的代码来做:

function mergePars() {
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var pars = body.getParagraphs();
  for( var j = 0; j < pars.length; ++j ) {
    try {
        pars[j].merge();
    } 
    catch (e) {
      Logger.log(e); // It will log "Exception: Element must be preceded by an element of the same type."
    }
  }
}

如果您获取文档中所有子项的数量(使用.getNumChildren())然后循环检查它们的DocumentApp.ElementType 的项目,并且前一个节点的类型为@,则可以摆脱try-catch 987654325@,申请.merge()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多