在文档的两个点之间添加和删除内容

时间:2017-11-15 01:54:55

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

我目前有一份文档,在StackOverflow用户的帮助下,随机生成问题,将其添加到文档的末尾,然后能够删除发布的所有问题。这是基于删除水平规则下的所有内容。

包含示例文档&amp ;;的GDrive链接代码:LINK TO GDRIVE

您还可以在此处查看目前的操作:https://imgur.com/QVrOZKu

但是,我现在只想在文档中的某个点之后添加内容,并且只删除两个特定点之间的内容。您可以在下面的图像中看到我要添加/删除的两个水平规则 内容。

enter image description here

图片中的第一条水平线是文档中的第三条水平线。

有没有人知道如何在这两点之间删除和添加内容?我已经尝试过使用子索引但是失败了。

1 个答案:

答案 0 :(得分:1)

这与Deleting all content down from the second horizontal line in a document类似,所以我调整了解决方案。第一个函数删除第3行和第4行之间的段落。当我们遍历段落时,它会计算水平线。当计数达到3时,开始删除后续段落。当它超过3时,停止循环。

function deleteFrom3to4() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.appendParagraph('');
  var para = body.getParagraphs();
  var ruleCount = 0;
  for (var i = 0; i < para.length - 1; i++) {
    if (para[i].findElement(DocumentApp.ElementType.HORIZONTAL_RULE)) {
      ruleCount++;
    }
    else if (ruleCount == 3) {
      body.removeChild(para[i]);
    }
    if (ruleCount > 3) {
      break;
    }
  }
}

这个在第3条水平线之后插入一个段落。再一次,它循环直到找到第3行;在它之后插入一个段落(由body.getChildIndex(para[i]) + 1子索引表示)并停止。

function insertAfter3() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.appendParagraph('');
  var para = body.getParagraphs();
  var ruleCount = 0;
  for (var i = 0; i < para.length - 1; i++) {
    if (para[i].findElement(DocumentApp.ElementType.HORIZONTAL_RULE)) {
      ruleCount++;
    }
    if (ruleCount == 3) {
      body.insertParagraph(body.getChildIndex(para[i]) + 1, "Here is a new paragraph");
      break;
    }
  }
}