删除NamedRange的文本在行上留下一个空的段落

时间:2019-07-12 10:08:14

标签: google-apps-script google-docs

我想从google doc中删除所有名称范围,但是当我使用以下代码删除它们时,文本和namedRanges被删除,它在每个namedRange的位置留下一个空段。

nameRanges.forEach(function (rangeEntry) {
    var ele = rangeEntry.getRange().getRangeElements()[0];
    var sOffset = ele.getStartOffset();
    var eOffset = ele.getEndOffsetInclusive();
    var txtObj = ele.getElement().asText();
    txtObj.deleteText(sOffset, eOffset);
    rangeEntry.remove();
}

我正在使用以下代码访问段落,并且它们的text属性作为空字符串返回。

body.getParagraphs().forEach( function (para, ind) {             
    console.log('para', para.editAsText().getText());             
})

我如何删除nameRange,这样就不会留下任何痕迹? 谢谢

1 个答案:

答案 0 :(得分:2)

  • 您要删除所有命名范围。
  • 您还希望删除具有命名范围的段落,同时删除命名范围。

如果我的理解是正确的,那么该修改如何?在此修改中,我使用了removeFromParent()。请认为这只是几个答案之一。

修改点:

  • var ele = rangeEntry.getRange().getRangeElements()[0]中检索元素的父级。然后,removeFromParent()删除了父对象。

修改后的脚本:

nameRanges.forEach(function (rangeEntry) {
  var ele = rangeEntry.getRange().getRangeElements()[0];

  var parent = ele.getElement().getParent(); // Added
  parent.removeFromParent(); // Added

  rangeEntry.remove();
});
  • 顺便说一句,当使用clear()代替removeFromParent()时,我认为结果与您当前的脚本相同。

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。那时,您可以提供要使用的样本文档吗?由此,我想确认您的情况。当然,请从示例文档中删除您的个人信息。