如何在两个"标签之间删除文本"在Google Apps脚本中

时间:2016-06-03 23:51:24

标签: google-apps-script google-docs google-docs-api

我正在使用Google Apps脚本从"模板"制作文档。 Google文档中的此模板具有以下格式:

(Text above the area of interest...) Culpa cillum excepteur cupidatat cillum ex.

{mySpecialText}
Est consectetur irure non quis sint exercitation velit qui consequat incididunt officia laborum ea veniam.
{/mySpecialText}

(More ignored text here...) Tempor voluptate irure laboris occaecat enim ipsum consequat velit.

除了代码之外,还应删除两个代码{mySpecialText}{/mySpecialText}之间的文字。我该怎么做呢?我下面显示的当前代码删除了标签,但没有删除之间的段落。

/**
 * @param doc - a `Document` instance.
 * @param sectionId - the name of the tag
 */
function removeSection (doc, sectionId) {
  var startTag = '{' + sectionId + '}'
  var endTag = '{/' + sectionId + '}'

  var body = doc.getBody()

  var startElem = body.findText(startTag)
  var endElem = body.findText(endTag)

  if (startElem == null) {
    return Logger.log('Couldn\'t find startElem with tag "' + startTag + '"')
  }
  if (endElem == null) {
    return Logger.log('Couldn\'t find endElem with tag "' + endTag + '"')
  }

  startElem = startElem.getElement()
  endElem = endElem.getElement()

  var toRemove = []
  var currentElement = startElem

  while (currentElement !== null && !isSameElement(currentElement, endElem)) {
    toRemove.push(currentElement)
    currentElement = currentElement.getNextSibling()
  }

  toRemove.push(endElem)

  for (var i = 0; i < toRemove.length; i++) {
    toRemove[i].removeFromParent()
  }
}

1 个答案:

答案 0 :(得分:0)

您需要删除标签之间的整个段落。假设这只是一个段落,您可以检索段落元素并按如下方式删除它:

var removeme = startElem.getParent().getNextSibling().asParagraph();
removeme.removeFromParent();

如果可能有多个段落,您可以编写一些带有循环的脚本,该循环检测removeme的下一个兄弟是否为结束标记。如果不是,则删除段落,否则停止循环。